2012-10-05 9 views
6

Używam wersji Pythona 3.2.3. Próbuję wydrukować listę numerów z rzędu, polecenie drukowania wydaje się zawsze drukować numery jeden w rzędzie.Drukowanie listy liczb w pythonie v.3

Przykład

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

wyjściowy:

1 

2 
... 

wymagane wyjście 1 2 3 4 5

ja docenić pomocy. P.s. Przeszukałem sieć tutaj i większość pytań była związana z Pythonem 2.7.

+0

Jest [python-3.x] (http: // stackoverflow.com/questions/tagged/python-3.x) tag, który może pomóc w wyszukiwaniu. – Evert

Odpowiedz

10

Użyj end argumentu tłumić (lub wymienić) automatyczne wyjście EOL:

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

Albo, należy prawdopodobnie wystarczy użyć:

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

Dziękuję Jonowi za szybką odpowiedź - rozwiązał problem. – Sinan

+0

Jest jeszcze łatwiejszy sposób, w którym funkcja drukowania jest funkcją: 'print (* numbers, sep = '\ t')' –

+2

@ThomasK Twój komentarz jest tak naprawdę bardzo dobrą odpowiedzią, dlaczego nie sprawi, że będzie to odpowiedź? –

4

Można użyć .join() połączyć je za pomocą znaku tabulacji:

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

map(str, numbers) jest identyczna [str(n) for n in numbers].

+0

Dziękuję za komentarz. To jest doceniane. – Sinan

+0

'map (str, numbers)' jest podobne do '(str (n) dla n w liczbach)', nie to, co napisałeś. –

2

Można użyć sys.stdout.write() zamiast print(), który wyśle ​​twoje wyjście do strumienia wyjściowego natychmiast i bez nowego wiersza.

Ma to tę wadę, że jest brzydka i ma tę zaletę, że nie zapisuje całego ciągu znaków w pamięci naraz. (. Podejście join będzie awarię komputera, jeśli tablica była bardzo, bardzo duże)

+0

Zmień "crash your computer", aby "zawiesić proces Pythona". – Deestan

+0

Dziękuję za komentarz, jest to docenione. – Sinan

7

W uzupełnieniu do innych odpowiedzi, jest to świetny sposób, aby to zrobić teraz, że druk jest funkcją:

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

W przeciwieństwie do oryginalnego kodu nie spowoduje to umieszczenia karty przed pierwszym numerem. Jeśli chcesz, aby dodatkowe zakładki, najprostszym sposobem jest po prostu umieścić pustą pozycję przed numerami, więc tworzy dodatkowy separator zakładka:

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