Ich würde gerne wissen, ob es einen besseren Weg gibt, alle Objekte in einer Python-Liste zu drucken als diesen:
myList = [Person("Foo"), Person("Bar")]
print("\n".join(map(str, myList)))
Foo
Bar
Ich lese so ist nicht wirklich gut:
myList = [Person("Foo"), Person("Bar")]
for p in myList:
print(p)
Gibt es nicht so etwas wie:
print(p) for p in myList
Wenn nicht, ist meine Frage ... warum? Wenn wir solche Dinge mit umfassenden Listen machen können, warum nicht als einfache Aussage außerhalb einer Liste?
python
list
printing
list-comprehension
Guillaume Voiron
quelle
quelle
for p in myList
"nicht wirklich gut" war?Antworten:
Angenommen, Sie verwenden Python 3.x:
Sie können das gleiche Verhalten unter Python 2.x verwenden
from __future__ import print_function
, wie von mgilson in den Kommentaren angegeben.Mit der print-Anweisung in Python 2.x benötigen Sie eine Iteration. In Bezug auf Ihre Frage, ob Sie
print(p) for p in myList
nicht funktionieren, können Sie einfach Folgendes verwenden, das das Gleiche tut und immer noch eine Zeile enthält:Für eine Lösung, die verwendet
'\n'.join()
, bevorzuge ich Listenverständnis und Generatoren,map()
daher würde ich wahrscheinlich Folgendes verwenden:quelle
from __future__ import print_function
auf Python2.6 und neuer.map()
und einem Generator? Pythons Schöpfer bevorzugt auch Verständnis und Generatoren gegenübermap()
.[F(x) for x in S]
klarer ist alsmap(F, S)
. Die Leistung wird dort nicht angesprochen, aber ich würde erwarten, dass der Geschwindigkeitsunterschied vernachlässigbar ist. Wie auch immer, ich war nur verwirrt über die Ablehnung, sorry, ich nahm an, dass du es warst!Ich benutze das die ganze Zeit:
quelle
format()
, ersetzen Sie diestr(x)
durch eineprint " ".join(["{:02d}".format(x) for x in l])
[print(a) for a in list]
gibt am Ende eine Reihe von None-Typen an, obwohl alle Elemente ausgedruckt werdenquelle
Für Python 2. *:
Wenn Sie die Funktion __str __ () für Ihre Personenklasse überladen, können Sie das Teil mit map (str, ...) weglassen. Eine andere Möglichkeit besteht darin, eine Funktion zu erstellen, wie Sie sie geschrieben haben:
In Python 3 gibt es das Argument sep für die Funktion print (). Schauen Sie sich die Dokumentation an.
quelle
Erweitern der Antwort von @ lucasg (inspiriert von dem erhaltenen Kommentar):
Um eine formatierte Listenausgabe zu erhalten, können Sie Folgendes tun:
Jetzt
", "
wird das Trennzeichen (nur zwischen Elementen, nicht am Ende) und die Formatierungszeichenfolge in'02d'
Kombination mit%x
einer formatierten Zeichenfolge für jedes Element bereitgestelltx
- in diesem Fall als Ganzzahl mit zwei Ziffern formatiert, links mit Nullen gefüllt.quelle
Um jeden Inhalt anzuzeigen, verwende ich:
Beispiel für die Verwendung in einer Funktion:
Hoffe ich habe geholfen.
quelle
Ich denke, dies ist am bequemsten, wenn Sie nur den Inhalt in der Liste sehen möchten:
Einfach, leicht zu lesen und kann zusammen mit Formatzeichenfolgen verwendet werden.
quelle
Die Frage von OP lautet: Gibt es so etwas wie Folgendes, wenn nicht, warum?
Antwort ist, es existiert, was ist:
Grundsätzlich
[]
für das Listenverständnis verwenden und dasprint
Drucken vermeidenNone
. Um zu sehen , warumprint
DruckeNone
sehen diesequelle
Ich habe kürzlich einen Passwortgenerator erstellt und obwohl ich für Python SEHR NEU bin, habe ich diesen entwickelt, um alle Elemente in einer Liste anzuzeigen (mit kleinen Änderungen, die Ihren Anforderungen entsprechen ...
Wie gesagt, ich bin SEHR NEU in Python und ich bin mir sicher, dass dies für einen Experten viel zu klobig ist, aber ich bin nur für ein anderes Beispiel hier
quelle
Angenommen, Ihre Liste wird gut gedruckt [1,2,3], dann ist ein einfacher Weg in Python3:
Wenn Sie dies ausführen, wird die folgende Ausgabe erzeugt:
quelle