Imprimir una lista anidada línea por línea – Python

A = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]

Estoy haciendo mi mejor esfuerzo para imprimir A de la forma:

 1 2 3 2 3 4 4 5 6 

Eso es en líneas diferentes, pero no puedo hacerlo sin todos los elementos en líneas diferentes. Este es mi código hasta ahora:

 for r in A: for t in r: print(t,) print 

Esta es mi salida:

 1 2 3 2 3 4 4 5 6 

Parece realmente simple, y creo que un pequeño cambio lo haría. ¡Gracias!

Use un bucle simple para y " ".join() asignando cada int en la lista anidada a una str con map() .

Ejemplo:

 >>> ys = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]] >>> for xs in ys: ... print(" ".join(map(str, xs))) ... 1 2 3 4 5 6 7 8 9 10 

La diferencia aquí es que podemos admitir longitudes arbitrarias de listas internas.


La razón por la que su ejemplo no funcionó como se esperaba es porque su bucle interno está iterando sobre cada elemento de la sub-lista;

 for r in A: # r = [1, 2, 3] for t in r: # t = 1 (on first iteration) print(t,) print 

E print() imprime caracteres de nueva línea al final a menos que uses: print(end="") Creo que si estuvieras usando Python 2.x print t, funcionaría. Por ejemplo:

 >>> ys = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]] >>> for xs in ys: ... for x in xs: ... print x, ... print ... 1 2 3 4 5 6 7 8 9 10 

Pero print(x,) no funcionaría como lo pretendías; Python 2.xo 3.x

 for r in A: print '%d %d %d' % tuple(r) 

Método 1 :

Podemos utilizar la lista de comprensión y el operador .join() .

 >>> my_list = [[1, 2, 3], [2, 3, 4], [4, 5, 6]] >>> for item in my_list: print ' '.join(str(x) for x in item) 1 2 3 2 3 4 4 5 6 

Método-2:

 >>> my_list = [[1, 2, 3], [2, 3, 4], [4, 5, 6]] >>> for item in my_list: for x in item: print x, print 1 2 3 2 3 4 4 5 6 

La print interna con una coma garantiza que los elementos de la lista interna se impriman en una sola línea. La print externa garantiza que, para la siguiente lista interna, se imprima en la siguiente línea.

print sin comillas finales imprimirá un carácter de nueva línea.

 for r in A: for t in r: print t, print 

La misma pregunta fue respondida por Jim Fasarakis Hilliard en Imprimir lista de listas en líneas separadas .

En Python 3.x podemos usar:

 A = [[1, 2, 3], [2, 3, 4], [4, 5, 6]] for i in A: print(*i) 

Y la salida correspondiente es:

 1 2 3 2 3 4 4 5 6 

Si estás en Python 3.x:

 print(*('{} {} {}'.format(*r) for r in A), sep='\n') 

o:

 print(*('%d %d %d' % tuple(r) for r in A), sep='\n') 

De lo contrario, puede importar la función de impresión de Python 3.x desde el módulo __future__ .