Mi requisito es tomar la cadena 'arrList' como argumento de main y dividirla usando una coma (,) y cada nombre es un Array (arr1, arr2, arr3). Ahora las 3 matrices deberían agregarse a una lista. El resultado debe ser: lista: 1,2,3,7,8,9,11,22,33. Pero debe seguir los pasos a continuación solo durante la implementación. Intenté debajo del código, pero no pude convertir. Cualquier ayuda es apreciada.

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)
-1
RK. 10 may. 2019 a las 13:19

3 respuestas

La mejor respuesta

Usar la función 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]

0
Fuji Komalan 10 may. 2019 a las 10:31

Puede usar la estructura de datos de 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)

Salida

[1, 2, 3, 7, 8, 9, 11, 22, 33]
1
Xuejian Li 10 may. 2019 a las 10:32
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)

Salida

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

La función locals() devuelve un diccionario que contiene las variables definidas en el espacio de nombres local.

1
mujjiga 10 may. 2019 a las 10:26