2012-06-24 15 views
65

Ich habe eine Liste in Python z.Liste ohne Klammern in einer einzigen Zeile drucken

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

Ich möchte, ohne die normalen das Array in einer einzigen Zeile drucken "[] ​​

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

Wird die Ausgabe geben wie,

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

Das ist nicht das Format ist, ich will stattdessen möchte ich, dass es so ist;

Sam, Peter, James, Julian, Ann 

Hinweis: Es muss in einer einzelnen Reihe sein.

Antwort

107
print ', '.join(names) 

Dies, wie es sich anhört, nimmt einfach alle Elemente der Liste und verbindet sie mit ', '.

+1

>>> names = [ "Sam", "Peter", "James" , "Julian", "Ann"] >>> drucken ','.join (names) SyntaxError: ungültige Syntax funktioniert nicht "FatalError" – Isuru

+10

@IsuruMalakaSamarasinha Wenn dies Python 3 ist, müssen Sie natürlich die Funktion print * (es ist ein Schlüsselwort in Python 2) aufrufen, dh ' print (',' .join (Namen)) '. – FatalError

+0

Wie führe ich das mit Wörterbuch durch? –

8

Dies ist, was Sie

", ".join(names) 
+0

Das Ergebnis wird in Anführungszeichen eingeschlossen. –

24

Allgemeine Lösung benötigen, arbeitet auf Arrays von nicht-Strings:

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

Es gibt anscheinend mehr als einen Weg, es zu tun. – Max

+8

Dies entspricht nicht den angegebenen Anforderungen. Beachten Sie das Beispiel des OP, das die resultierenden Namen ohne Anführungszeichen zeigt. –

+0

Guter Punkt. (...) –

3

Sie müssen durch die Liste Schleife und verwenden end=" " es auf einer Linie zu halten

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

OP sagt, dass es in einer einzelnen Reihe sein muss. – Ali

23

Hier ist ein einfacher.

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

Der Stern entpackt die Liste und gibt jedes Element in der Liste zurück.

+5

In 'Python 2.7.6' ist dies ein' SyntaxError: ungültige Syntax'. –

+1

Dies setzt das Komma nicht zwischen den Elementen. –

+4

Fügen Sie einfach den zusätzlichen Parameter sep: print (* Namen, sep = ',') –

0

Ich weiß nicht, ob dies als andere effizient, sondern einfache Logik funktioniert immer:

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(", ") 

Ausgang:

Sam, Peter, James, Julian, Ann

10

Wenn der Eingangs-Array ist Integer-Typ dann müssen Sie zuerst konvertieren Array in String-Typ Array und dann join Methode zum Verbinden mit , oder Raum irgendwas du willst. Beispiel:

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

Direkte Verwendung von Join, die der Ganzzahl beitreten wird und String wird Fehler wie oben angezeigt werfen.

+0

wie Sie dies mit dem Wörterbuch –

6

gibt es zwei Antworten, erste ist die Verwendung 'September' Einstellung

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

Die andere ist unter

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

durchführen Dies ist die ausgereifteste Lösung. –

Verwandte Themen