Antworten:
In Python 2:
mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
In Python 3 (wo printist eine eingebaute Funktion und keine Syntaxfunktion mehr):
mylist = ['x', 3, 'b']
print('[%s]' % ', '.join(map(str, mylist)))
Beide kehren zurück:
[x, 3, b]
Hierbei wird die map()Funktion verwendet, um str für jedes Element von mylist aufzurufen und eine neue Liste von Zeichenfolgen zu erstellen , die dann zu einer Zeichenfolge mit verbunden werden str.join(). Dann ersetzt der %Zeichenfolgenformatierungsoperator die Zeichenfolge in statt %sin "[%s]".
mapFunktion, strum jedes Element von aufzurufen mylistund eine neue Liste von Zeichenfolgen zu erstellen, mit denen er dann eine Zeichenfolge zusammenfügt str.join. Anschließend verwendet er den %Zeichenfolgenformatierungsoperator, um die Zeichenfolge anstelle von %sin zu ersetzen "[%s]".
"[{0}]".format(", ".join(str(i) for i in mylist))
map(f, xs)(oder imapin python2.x) (f(x) for x in xs), wenn fein vordefinierter Aufruf möglich ist. Das führt tendenziell weniger Bytecodes aus und ist normalerweise kompakter. Sicherlich ist das nicht map(lambda x:..., xs) viel schlimmer als(... for x in xs)
Dies ist einfacher Code. Wenn Sie neu sind, sollten Sie ihn leicht genug verstehen.
mylist = ["x", 3, "b"]
for items in mylist:
print(items)
Es druckt sie alle ohne Anführungszeichen, wie Sie wollten.
Wenn Sie Python3 verwenden:
print('[',end='');print(*L, sep=', ', end='');print(']')
print(end='['); print(*l, sep=', ', end=']\n')
Anstatt zu verwenden map, würde ich empfehlen, einen Generatorausdruck joinzu verwenden, der einen Iterator akzeptieren kann:
def get_nice_string(list_or_iterator):
return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
Hier joinist eine Member-Funktion der String-Klasse str. Es wird ein Argument benötigt: eine Liste (oder ein Iterator) von Zeichenfolgen, die dann eine neue Zeichenfolge mit allen in diesem Fall verketteten Elementen zurückgibt ,.
", ".join( str(x) for x in list_or_iterator).join('[]')
Sie können alle unerwünschten Zeichen aus einer Zeichenfolge löschen, indem Sie die translate()Methode mit Nonefür das tableArgument verwenden, gefolgt von einer Zeichenfolge, die die Zeichen enthält, die für das deletecharsArgument entfernt werden sollen.
lst = ['x', 3, 'b']
print str(lst).translate(None, "'")
# [x, 3, b]
Wenn Sie eine Version von Python vor 2.6 verwenden, müssen Sie stattdessen stringdie translate()Funktion des Moduls verwenden, da die Möglichkeit, Noneals tableArgument zu übergeben, erst mit Python 2.6 hinzugefügt wurde. Die Verwendung sieht folgendermaßen aus:
import string
print string.translate(str(lst), None, "'")
Die Verwendung der string.translate()Funktion funktioniert auch in Version 2.6+, daher ist die Verwendung möglicherweise vorzuziehen.
lst = ["it isn't", 3, 'b']==> ["it isnt", 3, b]und auch mitlst = ['it isn\'t', 3, 'b']
Hier ist eine interaktive Sitzung, die einige der Schritte in @ TokenMacGuys Einzeiler zeigt. Zuerst verwendet er die mapFunktion, um jedes Element in der Liste in eine Zeichenfolge zu konvertieren (tatsächlich erstellt er eine neue Liste, nicht die Elemente in der alten Liste). Dann verwendet er die String-Methode join, um diese Strings mit ', 'ihnen zu kombinieren . Der Rest ist nur die Formatierung von Zeichenfolgen, was ziemlich einfach ist. (Bearbeiten: Diese Instanz ist unkompliziert. Die Formatierung von Zeichenfolgen kann im Allgemeinen etwas komplex sein.)
Beachten Sie, dass die Verwendung joineine einfache und effiziente Methode zum Erstellen einer Zeichenfolge aus mehreren Teilzeichenfolgen ist, die viel effizienter ist als das sukzessive Hinzufügen von Zeichenfolgen zu Zeichenfolgen, was viel Kopieren hinter den Kulissen erfordert.
>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'
Verwenden .formatfür die Formatierung von Zeichenfolgen,
mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))
Ausgabe:
[x, 3, b]
Erläuterung:
mapwird verwendet, um jedes Element der Liste dem stringTyp zuzuordnen .,Trennzeichen zusammengefügt.[und ]in der print-Anweisung, um die Listenklammern anzuzeigen.Referenz:
.formatzur Formatierung von Zeichenfolgen PEP-3101
.formatam pythonischsten. Aber natürlich akzeptiere ich Meinungsverschiedenheiten. ;)
Ich wurde von @AniMenon inspiriert, eine allgemeinere pythonische Lösung zu schreiben.
mylist = ['x', 3, 'b']
print('[{}]'.format(', '.join(map('{}'.format, mylist))))
Es wird nur die formatMethode verwendet. Keine Spur von str, und es ermöglicht die Feinabstimmung des Elementformats. Wenn Sie beispielsweise Gleitkommazahlen als Elemente der Liste haben, können Sie deren Format anpassen, indem Sie in diesem Fall einen Konvertierungsspezifizierer hinzufügen:.2f
mylist = [1.8493849, -6.329323, 4000.21222111]
print("[{}]".format(', '.join(map('{:.2f}'.format, mylist))))
Die Ausgabe ist recht anständig:
[1.85, -6.33, 4000.21]
print(["Sam"])Aufruferepr("Sam"), die'Sam'(mit Anführungszeichen) zurückgegeben werden, anders als beim Aufrufenprint("Sam")und Python-Aufrufe,str("Sam")die zurückgegeben werdenSam(ohne Anführungszeichen). Weitere Informationen finden Sie unter Unterschied zwischenstrundreproder Pythonstrundlists .