Können Sie die string-formatter auf wirklich jede Art von Zeichenfolge, einschließlich multi-line string. So natürlich, wenn Sie hatte eine format-string - '{}\n{}\n{}' könnte passieren Sie drei Elemente, und Sie wären alle auf separaten Zeilen.
Also mit einer dynamischen Anzahl von Elementen, die Sie drucken möchten, alles, was Sie tun müssen ist, stellen Sie sicher, dass der format-string enthält die gleiche Anzahl von format-Elementen zu. Eine Möglichkeit, dies zu lösen, wäre zum erstellen der format-string dynamisch. Zum Beispiel diese:
'\n'.join('{}'for _ in range(len(myList))).format(*myList)
So erstellen Sie im wesentlichen eine format-string-erste, durch ein generator, erzeugen ein format Element {} pro element in myList und fügen diese mit einem neue-Zeile-Zeichen. Also der string sieht ungefähr so aus: {}\n{}\n…\n{}\n{}.
Und dann verwenden Sie die Zeichenfolge als format-string ein, und rufen Sie format auf Sie, die übergabe der ausgedruckten Liste als Argumente zu. So sind Sie richtig füllen Sie alle Flecken der format-string.
So, Sie kann es tun. Dies ist jedoch nicht wirklich eine praktische Idee. Es sieht ziemlich verwirrend und nicht vermitteln, Ihre Absicht gut. Eine bessere Möglichkeit wäre, Griff jedes Element der Liste einzeln, und formatieren Sie Sie getrennt, und nur dann verbinden Sie gemeinsam:
'\n'.join('{}'.format(item)for item in myList)
Als für Druck-Elemente zeilenweise, natürlich den offensichtlichen Weg, das würde nicht von Ihnen verlangen, um eine lange Zeichenkette mit Zeilenumbrüchen, wäre eine Schleife über die Elemente, und drucken Sie one-by-one:
for item in myList:print(item)# or use string formatting for the item hereprint('{}'.format(item))
Und natürlich, wie thefourtheye vorgeschlagen, wenn jeder loop-iteration ist sehr einfach, du kannst auch die ganze Liste an die print-Funktion, und legen Sie sep='\n' drucken Sie die Elemente auf separaten Zeilen jeden.
Im ersten Beispiel gibt es einige Fehler: Traceback (most recent call last): File "<Konsole>", line 1, in <module> KeyError: '\n'
Tut mir Leid, dass; es behoben.
Fällt mir auf, dass das Recht Antwort ist eine Kombination dieser und thefourtheye ist: print(*['{}'.format(item) for item in myList], sep='\n')
Wenn Sie mit Python 3.x und Ihre Absicht ist nur den Druck der Liste der Elemente, die in jeder Zeile ist, dann können Sie print - Funktion selbst, wie diese
my_list =[1,2,3,4]print(*my_list, sep="\n")
*my_list einfach entpackt die Liste der Elemente und übergeben diese jeweils als Parameter an die print Funktion (ja, print ist eine Funktion in Python 3.x).
Ausgabe
1234
Wenn du mit Python 2.die x -, dann können Sie importieren Sie einfach die drucken-Funktion aus der Zukunft, wie diese
from __future__ import print_function
Hinweis: Dieser import sollte die erste Zeile in der Datei.
+1 Das ist definitiv der Weg zu gehen. Nur wenige wissen über die sep argument in print().
Wenn Sie Python 2.7, nur from __future__ import print_function.
Danke Mann 🙂 Enthalten, die in der Antwort.
+1, aber wir sind sehr, sehr nah an die Verletzung der ein...offensichtliche Weg, dies zu tun - Klausel in Zen.
Meinst du wie print('\n'.join(a_list))? String Formatierung könnte wahrscheinlich etwas ähnliches tun zu '\n'.join(a_list), aber es scheint nicht notwendig hier. (siehe update)
Die Sache ist die, .format drucken nicht Dinge überhaupt. Das ist es, was print ist für. format dauert einige Daten und gibt einen string zurück. print ist eine Möglichkeit, die Ausgabe, der string auf dem terminal/der standard-Ausgabe, aber print und .format habe eigentlich gar keine echte Beziehung.
Update:
Ich nehme zurück, was ich gesagt habe über die string-Formatierung wird in der Lage, dies zu tun. Die format-Muster selbst definiert die stelligkeit der format Methode, so wenig dynamisch Aufbau der format-Muster, Sie können nicht format für diese.
Anderen Weg, es zu tun ist die Verwendung von string-Multiplikation:
list =[1,2,3,4,5]print(('{}\n'* len(list)).format(*list ))
Für plain old drucken, würde ich verwenden Sie die sep option der Befehl "drucken". Die format-Methode ist nützlich, wenn Sie das python-logging-Einrichtungen (die nicht über die sep-argument).
Können Sie die string-formatter auf wirklich jede Art von Zeichenfolge, einschließlich multi-line string. So natürlich, wenn Sie hatte eine format-string -
'{}\n{}\n{}'
könnte passieren Sie drei Elemente, und Sie wären alle auf separaten Zeilen.Also mit einer dynamischen Anzahl von Elementen, die Sie drucken möchten, alles, was Sie tun müssen ist, stellen Sie sicher, dass der format-string enthält die gleiche Anzahl von format-Elementen zu. Eine Möglichkeit, dies zu lösen, wäre zum erstellen der format-string dynamisch. Zum Beispiel diese:
So erstellen Sie im wesentlichen eine format-string-erste, durch ein generator, erzeugen ein format Element
{}
pro element inmyList
und fügen diese mit einem neue-Zeile-Zeichen. Also der string sieht ungefähr so aus:{}\n{}\n…\n{}\n{}
.Und dann verwenden Sie die Zeichenfolge als format-string ein, und rufen Sie
format
auf Sie, die übergabe der ausgedruckten Liste als Argumente zu. So sind Sie richtig füllen Sie alle Flecken der format-string.So, Sie kann es tun. Dies ist jedoch nicht wirklich eine praktische Idee. Es sieht ziemlich verwirrend und nicht vermitteln, Ihre Absicht gut. Eine bessere Möglichkeit wäre, Griff jedes Element der Liste einzeln, und formatieren Sie Sie getrennt, und nur dann verbinden Sie gemeinsam:
Als für Druck-Elemente zeilenweise, natürlich den offensichtlichen Weg, das würde nicht von Ihnen verlangen, um eine lange Zeichenkette mit Zeilenumbrüchen, wäre eine Schleife über die Elemente, und drucken Sie one-by-one:
Und natürlich, wie thefourtheye vorgeschlagen, wenn jeder loop-iteration ist sehr einfach, du kannst auch die ganze Liste an die print-Funktion, und legen Sie
sep='\n'
drucken Sie die Elemente auf separaten Zeilen jeden.print(*['{}'.format(item) for item in myList], sep='\n')
Wenn Sie mit Python 3.x und Ihre Absicht ist nur den Druck der Liste der Elemente, die in jeder Zeile ist, dann können Sie
print
- Funktion selbst, wie diese*my_list
einfach entpackt die Liste der Elemente und übergeben diese jeweils als Parameter an dieprint
Funktion (ja,print
ist eine Funktion in Python 3.x).Ausgabe
Wenn du mit Python 2.die x -, dann können Sie importieren Sie einfach die drucken-Funktion aus der Zukunft, wie diese
Hinweis: Dieser import sollte die erste Zeile in der Datei.
sep
argument inprint()
.from __future__ import print_function
.Meinst du wie
print('\n'.join(a_list))
? String Formatierung könnte wahrscheinlich etwas ähnliches tun zu'\n'.join(a_list)
, aber es scheint nicht notwendig hier. (siehe update)Die Sache ist die,
.format
drucken nicht Dinge überhaupt. Das ist es, wasprint
ist für.format
dauert einige Daten und gibt einen string zurück.print
ist eine Möglichkeit, die Ausgabe, der string auf dem terminal/der standard-Ausgabe, aberprint
und.format
habe eigentlich gar keine echte Beziehung.Update:
Ich nehme zurück, was ich gesagt habe über die string-Formatierung wird in der Lage, dies zu tun. Die format-Muster selbst definiert die stelligkeit der
format
Methode, so wenig dynamisch Aufbau der format-Muster, Sie können nichtformat
für diese.Halten Sie Es Einfach
gibt
Ist es, was Sie wollen, zu erhalten?
Anderen Weg, es zu tun ist die Verwendung von string-Multiplikation:
Für plain old drucken, würde ich verwenden Sie die sep option der Befehl "drucken". Die format-Methode ist nützlich, wenn Sie das python-logging-Einrichtungen (die nicht über die sep-argument).