Imagen de las siguientes listas:
A = [1,2,3,4] B = ['A','B','C','D'] C = [10,11,12,13] D = [100,200,300,400] Debería obtener los siguientes resultados: Z = ['1A10100', '2B11200', '3C12300', '4D13400']
Puedo hacer esto usando muchas matrices vacías, hágalo primero usando un bucle for para A y B, luego use esta nueva lista y agregue C para cada i, etc.
La pregunta es, ¿se puede hacer esto de una manera más inteligente? En mi caso real las listas son 6?
Puedes usar una lista simple de comprensión:
Z = [''.join(str(x) for x in l) for l in zip(A,B,C,D)] salida: ['1A10100', '2B11200', '3C12300', '4D13400']
Si ya tienes un contenedor para tus listas:
lists = [A,B,C,D] [''.join(str(x) for x in l) for l in zip(*lists)]Usando una lista de comprensión podemos probar:
A = [1,2,3,4] B = ['A','B','C','D'] C = [10,11,12,13] D = [100,200,300,400] nums = list(range(0, len(A))) Z = [str(A[i]) + B[i] + str(C[i]) + str(D[i]) for i in nums] print(Z) # ['1A10100', '2B11200', '3C12300', '4D13400']Si la longitud de cada lista es fija y tiene la misma longitud, simplemente puede recorrer los índices, concatenarlos y luego insertarlos uno por uno en la matriz de resultados.
A = [1,2,3,4] B = ['A','B','C','D'] C = [10,11,12,13] D = [100,200,300,400] # Prepare the empty array result = [] # Concat and insert one-by-one for i in range(len(A)): result.append('{}{}{}{}'.format(A[i], B[i], C[i], D[i])) print(result)Producción:
['1A10100', '2B11200', '3C12300', '4D13400']También hay otra forma de concatenar e insertar en la matriz de resultados además del código anterior:
for i in range(len(A)): tmp = str(A[i]) + B[i] + str(C[i]) + str(D[i]) result.append(tmp) for i in range(len(A)): result.append(f'{A[i]}{B[i]}{C[i]}{D[i]}')