Fand diese Frage als erfüllt fast die gleiche Aufgabe. Und ich habe eine Funktion erstellt, um eine mehrspaltige Liste mit der Anzahl der Spalten als Parameter zu drucken. Vielleicht nicht so elegant wie Ein-Zeilen-Lösungen, aber es könnte für jemanden nützlich sein.
Es kann jedoch unvollständige Listen verarbeiten, z.B. kann es eine Liste von 11 in 3 Zeilen drucken.
Funktion zur besseren Lesbarkeit aufgeteilt:
def is_printable(my_list):
return len(my_list) > 0
def create_empty_list(columns):
result = []
for num in range(0, columns):
result.append([])
return result
def fill_empty_list(empty_list, my_list, columns):
column_depth = len(my_list) / columns if len(my_list) % columns == 0 else len(my_list) / columns + 1
item_index = 0
for column in range(0, columns):
while len(empty_list[column]) < column_depth:
if item_index < len(my_list):
empty_list[column].append(my_list[item_index])
else:
empty_list[column].append(" ") # last column could be incomplete, fill it with space
item_index += 1
def print_list_in_columns(my_list, columns=1):
if not is_printable(my_list):
print 'Nothing to print, sorry...'
return
column_width = 25 #(in symbols) Also can be calculated automatically
list_to_print = create_empty_list(columns)
fill_empty_list(list_to_print, my_list, columns)
iterators = ["it" + str(i) for i in range(0, columns)]
for iterators in zip(*list_to_print):
print ("".join(str.ljust(i, column_width) for i in iterators))
und den Anrufteil:
foolist = ['exiv2-devel', 'mingw-libs', 'tcltk-demos', 'fcgi', 'netcdf',
'pdcurses-devel', 'msvcrt', 'gdal-grass', 'iconv', 'qgis-devel',
'qgis1.1', 'php_mapscript']
print_list_in_columns(foolist, 2)
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.