2012-06-24 14 views
65

Ho una lista in Python ad es.Stampa elenco senza parentesi in una riga singola

names = ["Sam", "Peter", "James", "Julian", "Ann"] 

voglio stampare la matrice in una sola linea, senza il normale "[]

names = ["Sam", "Peter", "James", "Julian", "Ann"] 
print (names) 

darà l'uscita come;

["Sam", "Peter", "James", "Julian", "Ann"] 

Questo non è il formato che voglio invece voglio che sia così:

Sam, Peter, James, Julian, Ann 

Nota: deve essere in una singola riga.

risposta

107
print ', '.join(names) 

Questo, come sembra, vuole solo tutti gli elementi della lista e si unisce a loro con ', '.

+1

>>> nomi = [ "Sam", "Peter", "James" , "Julian", "Ann"] >>> stampa ','.join (nomi) SyntaxError: sintassi non valida non funziona "FatalError" – Isuru

+10

@IsuruMalakaSamarasinha Se questo è python 3, allora naturalmente dovrai chiamare la funzione print * (è una parola chiave in Python 2), cioè ' print (',' .join (nomi)) '. – FatalError

+0

come eseguire questo con il dizionario? –

8

Questo è quello che vi serve

", ".join(names) 
+0

Incapsula il risultato tra virgolette. –

24

soluzione generale, funziona su array di non-stringhe:

>>> print str(names)[1:-1] 
'Sam', 'Peter', 'James', 'Julian', 'Ann' 
+0

C'è più di un modo per farlo, apparentemente. – Max

+8

Questo non soddisfa i requisiti indicati. Si noti l'esempio dell'OP che mostra i nomi risultanti senza virgolette. –

+0

Buon punto. (...) –

3

È necessario scorrere la lista e utilizzare end=" " di tenerlo su una linea

names = ["Sam", "Peter", "James", "Julian", "Ann"] 
    index=0 
    for name in names: 
     print(names[index], end=", ") 
     index += 1 
+0

OP dice che deve essere in una singola riga. – Ali

23

Ecco una semplice.

names = ["Sam", "Peter", "James", "Julian", "Ann"] 
print(*names) 

la stella scompatta l'elenco e restituisce ogni elemento nell'elenco.

+5

In 'python 2.7.6', Si tratta di un' SyntaxError: invalid syntax'. –

+1

Ciò non inserisce la virgola tra gli elementi. –

+4

Basta aggiungere il parametro aggiuntivo sep: print (* names, sep = ',') –

0

Non so se questo è efficace come gli altri, ma semplice logica funziona sempre:

import sys 
name = ["Sam", "Peter", "James", "Julian", "Ann"] 
for i in range(0, len(names)): 
    sys.stdout.write(names[i]) 
    if i != len(names)-1: 
     sys.stdout.write(", ") 

uscita:

Sam, Peter, James, Julian, Ann

10

Se la matrice di ingresso è Integer tipo allora avete bisogno di per prima cosa convertire la matrice in matrice tipo e quindi utilizzare il metodo join per partecipare a , o spazio tutto quello che vuoi. ad esempio:

>>> arr = [1, 2, 4, 3] 
>>> print(", " . join(arr)) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: sequence item 0: expected string, int found 
>>> sarr = [str(a) for a in arr] 
>>> print(", " . join(sarr)) 
1, 2, 4, 3 
>>> 

Uso diretto di join che si unirà al numero intero e stringa genererà un errore come mostrato sopra.

+0

come eseguire ciò con il dizionario –

6

Ci sono due risposte, prima è l'uso 'settembre' impostazione

>>> print(*names, sep = ', ') 

L'altro è sotto

>>> print(', '.join(names)) 
+0

Questa è la soluzione più matura. –