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__
.