2012-10-05 20 views
6

Ich benutze Python Version 3.2.3. Ich versuche, eine Liste von Zahlen in einer Reihe zu drucken, der Druckbefehl scheint immer die Zahlen eins nach Reihe zu drucken.Drucken einer Liste von Zahlen in Python v.3

Beispiel

numbers = [1, 2, 3, 4, 5]; 
for num in numbers: 
    print("\t ", num) 

Ausgabe lautet:

1 

2 
... 

die erforderliche Ausgabe 1 2 3 4 5

würde ich Ihre Hilfe zu schätzen wissen. Ps.s. Ich habe das Internet hier durchsucht und die meisten Fragen bezogen sich auf Python 2.7.

+0

Es gibt eine [Python-3.x] (http: // stackoverflow.com/questions/tagged/python-3.x) -Tag, das bei Ihren Suchen hilfreich sein kann. – Evert

Antwort

10

das end Argument zu unterdrücken (oder zu ersetzen), um die automatische EOL Ausgabe:

print("\t ", num, end='') 

Oder sollten Sie wahrscheinlich verwenden Sie einfach:

print('\t'.join(map(str, [1, 2, 3, 4, 5]))) 
+0

Vielen Dank Jon für Ihre schnelle Antwort - Es löste das Problem. – Sinan

+0

Es gibt jetzt einen noch einfacheren Weg, dass Drucken eine Funktion ist: 'print (* Zahlen, sep = '\ t')' –

+2

@ThomasK Dein Kommentar ist eigentlich eine sehr gute Antwort, warum nicht eine Antwort geben? –

4

können Sie .join() nutzen sie sich registrieren um den Tab-Zeichen verwenden:

>>> numbers = [1, 2, 3, 4, 5] 
>>> print('\t'.join(map(str, numbers))) 
1 2 3 4 5 

map(str, numbers) zu [str(n) for n in numbers] identisch ist.

+0

Vielen Dank für Ihren Kommentar. Es wird geschätzt. – Sinan

+0

'map (str, numbers)' ist ähnlich wie '(str (n) für n in Zahlen)', nicht das, was Sie geschrieben haben. –

2

Sie sys.stdout.write() statt print() verwenden könnte, die sendet Ihre Ausgabe sofort und ohne Zeilenumbruch an den Ausgabestream.

Dies hat den Nachteil, hässlich zu sein und den Vorteil zu haben, dass die ganze Zeichenfolge nicht gleichzeitig im Speicher abgelegt wird. (. Der join Ansatz würde Ihr Computer abstürzen, wenn Ihr Array war sehr, sehr groß)

+0

Ändern Sie "crash your computer" auf "crash your Python Prozess". – Deestan

+0

Vielen Dank für den Kommentar, es wird geschätzt. – Sinan

7

Zusätzlich zu den anderen Antworten, gibt es eine nette Art und Weise es jetzt, dass Druck zu tun, ist eine Funktion:

print(*numbers, sep='\t') 

Im Gegensatz zu Ihrem ursprünglichen Code wird dadurch kein Tab vor der ersten Nummer eingefügt. Wenn Sie, dass zusätzliche Registerkarte mögen, ist der einfachste Weg, kurz bevor die Zahlen ein leeres Element zu setzen, so dass es schafft einen zusätzlichen Tab Separator:

print('', *numbers, sep='\t') 
Verwandte Themen