2012-11-03 72 views
24
LIST = ['Python','problem','whatever'] 
print(LIST) 

Wenn ich dieses Programm ausführen bekomme ichWie entfernt man eckige Klammern aus der Liste in Python?

[Python, problem, whatever] 

Ist es möglich, dass die eckigen Klammern von Ausgabe zu entfernen?

+0

Ich schlage vor, 'map' anstelle von 'str (i) für i in LIST' -' map' ist C-Code, also ist es schneller – yedpodtrzitko

+0

List Verständnis ist eigentlich schneller als Karte in Python2, weil es keinen Stack-Frame erstellt, der rechenintensiv ist. Karte erstellt es. Dieses Verhalten ist jedoch problematisch, da die Variable im Listenverständnis aufgrund von Rebinding auslaufen kann, wenn vorher eine Variable mit demselben Namen deklariert wurde. Das Listenverständnis in Python3 weist kein solches Problem auf, da es geändert wurde, um einen Stapelrahmen zu erzeugen, der mit Generatorausdrücken konsistent ist. –

Antwort

51

Man könnte es in eine Zeichenfolge konvertieren, anstatt die Liste der Druck direkt:

print(", ".join(LIST)) 

Wenn die Elemente in der Liste sind keine Strings, können Sie sie in einen String konvertieren entweder repr verwenden (wenn Sie Anführungszeichen wollen um Strings) oder str (wenn Sie es nicht tun), etwa so:

LIST = [1, "foo", 3.5, { "hello": "bye" }] 
print(", ".join(repr(e) for e in LIST)) 

, die den Ausgang gibt:

1, 'foo', 3.5, {'hello': 'bye'} 
+0

Danke, aber was ist wenn ich Nummern in meiner LISTE habe? –

+1

@ GregorGajič dann "," .join (str (i) für i in LIST) – bereal

+0

@ GregorGajič: Antwort aktualisiert. –

18

Ja, es gibt mehrere Möglichkeiten, dies zu tun. Zum Beispiel können Sie die Liste in einen String konvertieren und dann die erste und letzte Zeichen entfernen:

l = ['a', 2, 'c'] 
print str(l)[1:-1] 
'a', 2, 'c' 

Wenn die Liste nur Zeichenfolgen enthält und Sie die Anführungszeichen entfernen zu können Sie die join Methode verwenden, wie bereits wurde gesagt.

10

wenn Sie Zahlen in der Liste haben, können Sie map verwenden können str auf jedes Element anwenden:

print ', '.join(map(str, LIST)) 

^map ist Code C, so dass es schneller ist als str(i) for i in LIST

5
def listToStringWithoutBrackets(list1): 
    return str(list1).replace('[','').replace(']','') 
Verwandte Themen