Antworten:
In Python 2:
mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
In Python 3 (wo print
ist 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 %s
in "[%s]"
.
map
Funktion, str
um jedes Element von aufzurufen mylist
und 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 %s
in zu ersetzen "[%s]"
.
"[{0}]".format(", ".join(str(i) for i in mylist))
map(f, xs)
(oder imap
in python2.x) (f(x) for x in xs)
, wenn f
ein 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 join
zu verwenden, der einen Iterator akzeptieren kann:
def get_nice_string(list_or_iterator):
return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
Hier join
ist 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 None
für das table
Argument verwenden, gefolgt von einer Zeichenfolge, die die Zeichen enthält, die für das deletechars
Argument 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 string
die translate()
Funktion des Moduls verwenden, da die Möglichkeit, None
als table
Argument 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 map
Funktion, 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 join
eine 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 .format
für die Formatierung von Zeichenfolgen,
mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))
Ausgabe:
[x, 3, b]
Erläuterung:
map
wird verwendet, um jedes Element der Liste dem string
Typ zuzuordnen .,
Trennzeichen zusammengefügt.[
und ]
in der print-Anweisung, um die Listenklammern anzuzeigen.Referenz:
.format
zur Formatierung von Zeichenfolgen PEP-3101
.format
am 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 format
Methode 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 zwischenstr
undrepr
oder Pythonstr
undlist
s .