2017-12-10 5 views
0

Bitte schließen Sie, wenn dies ein Duplikat ist, aber this answer beantwortet meine Frage nicht, da ich eine Liste drucken möchte, nicht Elemente aus einer Liste.Was ist der sauberste Weg, um eine gleich große Liste in Python zu drucken?

Zum Beispiel hat die folgenden nicht:

mylist = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] 
print(%3s % mylist) 

gewünschte Ausgabe:

[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] 

Grundsätzlich, wenn alle Elemente in der Liste sind n Ziffern oder weniger gleicher Abstand würde jedes Element geben n+1 Flecken im Ausdruck. Wie setw in C++. Angenommen n ist bekannt.

Wenn ich eine ähnliche SO-Frage verpasst habe, kannst du gerne schließen.

+0

Nur nitpick ist es ein 'list' in Python genannt, nicht ein' :-) – bgse

+0

@bgse In Python array' eine 'array' eine Sammlung aller gleichen Objekte ist. https://docs.python.org/3/library/array.html –

Antwort

3

Sie können die Formatierung wie im folgenden Beispiel auswerten. Wenn Sie wirklich die eckigen Klammern müssen, dann werden Sie zur Geige haben ein bisschen

lst = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] 

frmt = "{:>3}"*len(lst) 

print(frmt.format(*lst)) 
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
3
items=range(10) 
''.join(f'{x:3}' for x in items) 
' 0 1 2 3 4 5 6 7 8 9' 
1

Falls keine der anderen Antworten funktioniert, versuchen Sie diesen Code:

output = '' 
    space = '' 
    output += str(list[0]) 
    for spacecount in range(spacing): 
     space += spacecharacter 
    for listnum in range(1, len(list)): 
     output += space 
     output += str(list[listnum]) 
    print(output) 
0

Ich denke, dies ist die beste noch, wie es Ihnen erlaubt, Liste zu manipulieren, wie Sie wünschen. sogar numerisch.

mylist = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] 
print(*map(lambda x: str(x)+" ",a)) 
Verwandte Themen