Преобразование строки Python в массив - PullRequest
0 голосов
/ 10 мая 2019

Мое требование - взять строку 'arrList' в качестве аргумента из main и разделить ее, используя запятую (,), и каждое имя является массивом (arr1, arr2, arr3).Теперь все 3 массива должны быть добавлены в список.Вывод должен быть: список: 1,2,3,7,8,9,11,22,33.Но следует придерживаться следующих шагов только при реализации.Попробовал ниже код, но не смог конвертировать.Любая помощь приветствуется.

arr1 = [1,2,3]
arr2 = [7,8,9]
arr3 = [11,22,33]
list = []

def arrTest(arrList):
        var = arrList.split(',')
        for x in var:

    #f = open(, "r")
        #for x in f:
        #   list.append(x.rstrip('\n'))


if __name__ == '__main__':
    arrList = "arr1,arr2,arr3"
    arrTest(arrList)

Ответы [ 3 ]

1 голос
/ 10 мая 2019
arr1 = [1,2,3]
arr2 = [7,8,9]
arr3 = [11,22,33]
the_list = []

arrList = "arr1,arr2,arr3"
for array in arrList.split(','):
    if array in locals():
        the_list.extend(locals()[array])

print (the_list)

выход

[1, 2, 3, 7, 8, 9, 11, 22, 33]

locals() функция возвращает словарь, содержащий переменные, определенные в локальном пространстве имен.

1 голос
/ 10 мая 2019

Вы можете использовать структуру данных Python dict.

arr1 = [1,2,3]
arr2 = [7,8,9]
arr3 = [11,22,33]
d = {"arr1": arr1, "arr2": arr2, "arr3": arr3}

def arrTest(arrList):
    l = []
    var = arrList.split(',')
    for x in var:
        for e in d[x]:
            l.append(e)
    return l

if __name__ == '__main__':
    arrList = "arr1,arr2,arr3"
    l = arrTest(arrList)
    print(l)

Вывод

[1, 2, 3, 7, 8, 9, 11, 22, 33]
0 голосов
/ 10 мая 2019

Используйте функцию eval

arr1 = [1,2,3]
arr2 = [7,8,9]
arr3 = [11,22,33]
out = []

def arrTest(arrList):
        list_strs = arrList.split(',')
        for list_str in list_strs:
          l = eval(list_str)
          out.extend(l)


arrList = "arr1,arr2,arr3"
arrTest(arrList)
print(out)

[1, 2, 3, 7, 8, 9, 11, 22, 33]

...