2015-05-29 13 views
5

A = [[1, 2, 3], [2, 3, 4], [4, 5, 6]]Stampare una riga di elenco nidificato per riga - Python

Sto cercando mio meglio per stampare A della forma:

1 2 3 
2 3 4 
4 5 6 

che si trova in diverse linee, ma non sono in grado di farlo senza tutti gli elementi in diverse linee. Questo è il mio codice finora:

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

Questa è la mia uscita:

1 
2 
3 
2 
3 
4 
4 
5 
6 

Sembra davvero semplice, e penso che una piccola modifica avrebbe fatto. Grazie!

risposta

5

Utilizzare un ciclo for semplice e " ".join() mappare ogninell'elenco nidificato su str con map().

Esempio:

>>> 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 differenza qui è che possiamo sostenere lunghezze arbitrarie di liste interne.


Il motivo per il tuo esempio non ha funzionato come previsto è perché il vostro ciclo interno viene iterazione di ogni elemento del sub-list;

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

E print() da stampe predefinite caratteri di nuova riga alla fine a meno che non si utilizza: print(end="") Credo che se si sta utilizzando Python 2.x print t, avrebbe funzionato. Per esempio:

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

Ma print(x,) non avrebbe funzionato come desiderato esso; Python 2.x o 3.x

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

print senza virgola finale stamperà un carattere di fine riga.

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

Se siete in 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') 

In caso contrario, è possibile importare la funzione di stampa pitone di 3.x dal modulo __future__.

2

Metodo-1:

Possiamo usare di lista e .join() operatore.

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

Metodo-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 

interno print con una virgola assicura che gli elementi di elenco interno sono stampati in una singola linea. Esterno: print assicura che per la successiva lista interna, stampi nella riga successiva.

1

La stessa domanda è stata fornita da Jim Fasarakis Hilliard nel Print list of lists in separate lines.

In Python 3.x possiamo utilizzare:

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

for i in A: 
     print(*i) 

E l'uscita corrispondente è:

1 2 3 
2 3 4 
4 5 6