¿Hay una manera de combinar índice de lista múltiple por índice?

Por ejemplo, tengo tres listas (de la misma longitud)

A = [1,2,3] B = [a,b,c] C = [x,y,z] 

y quiero fusionarlo en algo como: [[1, a, x], [2, b, y], [3, c, z]].

Aquí está lo que tengo hasta ahora:

 define merger(A,B,C): answer = for y in range (len(A)): a = A[y] b = B[y] c = C[y] temp = [a,b,c] answer = answer.extend(temp) return answer 

Error recibido:

El objeto ‘NoneType’ no tiene atributo ‘extender’

Parece que su código está destinado a decir answer = [] , y omitir eso causará problemas. Pero el mayor problema que tienes es este:

 answer = answer.extend(temp) 

extend modifica answer y devuelve Ninguno. Deje esto como solo answer.extend(temp) y funcionará. Es probable que también desee utilizar el método de append lugar de extend : al final de la answer , al agregar un objeto (la lista de la temp ), al tiempo que se agrega cada elemento de la temperatura de forma individual, dando finalmente la versión aplanada de lo que está buscando: [1, 'a', 'x', 2, 'b', 'y', 3, 'c', 'z'] .

Pero, en lugar de reinventar la rueda, esto es exactamente para lo que sirve la zip integrada:

 >>> A = [1,2,3] >>> B = ['a', 'b', 'c'] >>> C = ['x', 'y', 'z'] >>> list(zip(A, B, C)) [(1, 'a', 'x'), (2, 'b', 'y'), (3, 'c', 'z')] 

Tenga en cuenta que en Python 2, zip devuelve una lista de tuplas; en Python 3, devuelve un iterador perezoso (es decir, construye las tuplas a medida que se solicitan, en lugar de precomputarlas). Si quieres el comportamiento de Python 2 en Python 3, pásalo a través de la list como lo he hecho anteriormente. Si desea el comportamiento de Python 3 en Python 2, use la función izip de itertools.

Para obtener una lista de listas , puede utilizar la función integrada zip() y la comprensión de la lista para convertir cada elemento del resultado de zip() de una tuple a una list :

 A = [1, 2, 3] B = [4, 5, 6] C = [7, 8, 9] X = [list(e) for e in zip(A, B, C,)] print X >>> [[1, 4, 7], [2, 5, 8], [3, 6, 9]] 

Suponiendo que está haciendo esto para la clase y que no está aprendiendo todos los trucos que hacen de Python una gran herramienta aquí es lo que necesita. Tuvo dos problemas, primero si desea extender, luego hágalo en su lugar, pero el resultado deseado muestra que desea anexar, no extender

 def merger(A,B,C): answer = [] for y in range (len(A)): a=A[y] b=B[y] c=C[y] temp = [a,b,c] answer.append(temp) return answer >>> answer [[1, 'a', 'x'], [2, 'b', 'y'], [3, 'c', 'z']]