In dieser Antwort wird die gleiche Methode wie in der Antwort von @Aaron Digulla verwendet, allerdings mit einer etwas pythonischeren Syntax. Das könnte einige der obigen Antworten leichter verständlich machen.
>>> for a,b,c in zip(foolist[::3],foolist[1::3],foolist[2::3]):
>>> print '{:<30}{:<30}{:<}'.format(a,b,c)
exiv2-devel mingw-libs tcltk-demos
fcgi netcdf pdcurses-devel
msvcrt gdal-grass iconv
qgis-devel qgis1.1 php_mapscript
Dies kann leicht an eine beliebige Anzahl von Spalten oder variablen Spalten angepasst werden, was zu etwas wie der Antwort von @gnibbler führen würde. Die Abstände können an die Bildschirmbreite angepasst werden.
Aktualisierung: Erläuterung wie gewünscht.
Indizierung
foolist[::3]
wählt jedes dritte Element von foolist
. foolist[1::3]
wählt jedes dritte Element aus, beginnend mit dem zweiten Element ('1', da Python eine Null-Indexierung verwendet).
In [2]: bar = [1,2,3,4,5,6,7,8,9]
In [3]: bar[::3]
Out[3]: [1, 4, 7]
zip
Das Zippen von Listen (oder anderen Iterablen) erzeugt Tupel aus den Elementen der Listen. Zum Beispiel:
In [5]: zip([1,2,3],['a','b','c'],['x','y','z'])
Out[5]: [(1, 'a', 'x'), (2, 'b', 'y'), (3, 'c', 'z')]
zusammen
Setzt man diese Ideen zusammen, erhält man unsere Lösung:
for a,b,c in zip(foolist[::3],foolist[1::3],foolist[2::3]):
Hier erzeugen wir zunächst drei "Scheiben" von foolist
, jeweils indiziert durch jedes Drittel-Element und um eins versetzt. Einzeln enthalten sie jeweils nur ein Drittel der Liste. Wenn wir nun diese Slices zippen und iterieren, erhalten wir bei jeder Iteration drei Elemente von foolist
.
Das ist es, was wir wollten:
In [11]: for a,b,c in zip(foolist[::3],foolist[1::3],foolist[2::3]):
....: print a,b,c
Out[11]: exiv2-devel mingw-libs tcltk-demos
fcgi netcdf pdcurses-devel
[etc]
Anstelle von:
In [12]: for a in foolist:
....: print a
Out[12]: exiv2-devel
mingw-libs
[etc]
1 Stimmen
Erstens ist es keine gute Idee, dict als Variablennamen zu verwenden. Zweitens ist das, was Sie hier zu drucken versuchen, eine Liste, ein dict verwendet {} und :, um die Schlüssel und Werte zu trennen
3 Stimmen
-1: Im Titel der Frage steht "Liste" - eine komplette Verdoppelung. In der Frage steht "dict". Der Beispielcode ist eine Liste - eine komplette Verdoppelung. Möchten Sie, dass die Liste in ein Diktat umgewandelt und ausgedruckt wird? Wenn ja, ändern Sie die Frage, um zu beschreiben, was Sie vraiment wollen.
0 Stimmen
Ich habe die Beschreibung und den Beispielcode wie empfohlen korrigiert. Der Titel und die Beschreibung spiegeln jetzt mein Ziel wider. Vielen Dank für die Korrekturen.
0 Stimmen
Wenn die Herabstufungen auf die anfängliche Verwirrung und die schlechte Formulierung zurückzuführen waren, nehmen Sie sie bitte zurück, da dies inzwischen behoben wurde. Wenn die Herabstufungen aus einem anderen Grund erfolgten, erklären Sie mir bitte, dass ich den Fehler beheben oder zumindest nicht noch einmal machen kann. Ich danke Ihnen.
0 Stimmen
Zu Downvotes: Downvoteure erhalten nach der Abstimmung keine Benachrichtigung über Kommentare :(
0 Stimmen
Re downvotes: Oh. Das ist bedauerlich. Ich kann die Logik, die zu dieser Funktion führt, nachvollziehen, aber es macht es Anfängern schwer, aus dem Loch herauszukommen. Danke für den Hinweis, sonst hätte ich weiterhin schlecht über S. Lott gedacht, weil er es ignoriert hat.
1 Stimmen
Im Jahr 2021 empfehle ich Ihnen, die Antworten von Claudio y Epischer Wink für ihre Verwendung von
columnize
.0 Stimmen
Danke @CameronSmith. Epic Wink's ist direkt und kurz genug, um die akzeptierte Antwort zu ändern, für py3.