2012-10-05 11 views
6

私はPythonバージョン3.2.3を使用しています。私は行の番号のリストを印刷しようとしています、印刷コマンドは、常に行に1つの番号を印刷するようです。Pythonバージョン3の数字のリストを印刷

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

出力は次のようになります。

1 

2 
... 

必要な出力は、私はあなたの助けをいただければ幸いです1 2 3 4 5

です。 P.私はここでWebを検索し、質問のほとんどはPython 2.7に関連していました。

+0

を[のpython-3.xでは](HTTPがありますあなたの検索に役立つ可能性のあるタグがあります。 – Evert

答えて

10

抑制(または交換)する自動EOL出力をend引数を使用します。

あなたはおそらく使用すべき
print("\t ", num, end='') 

または、:

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

あなたの迅速な返事のためにジョンをありがとう - それは問題を解決しました。 – Sinan

+0

printは関数であるため、もっと簡単な方法があります: 'print(* numbers、sep = '\ t')' –

+2

@ThomasKあなたのコメントは実際には非常に良い答えです。 –

4

あなたはタブ文字を使用してそれらを結合するために.join()を使用することができます。

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

map(str, numbers)[str(n) for n in numbers]と同じです。

+0

ご意見ありがとうございます。それは感謝しています。 – Sinan

+0

'map(str、numbers)'は、あなたが書いたものではなく、(str(n)for numbers) 'に似ています。 –

2

あなたはsys.stdout.write()代わりのprint()を使用することができ、出力を直ちに出力し、改行なしで出力します。

これは、醜いという欠点があり、文字列全体を一度にメモリに格納しないという利点があります。 (。あなたの配列は非常に、非常に大規模だった場合joinアプローチは、コンピュータをクラッシュしていました)

+0

"あなたのコンピュータをクラッシュする"を "あなたのPythonプロセスをクラッシュする"に変更してください。 – Deestan

+0

コメントいただきありがとうございます。 – Sinan

7

を他の回答に加えて、それを行うにはきちんとした方法は、今では印刷機能があります:

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

元のコードとは異なり、これは最初の数字の前にタブを置くことはありません。あなたは、余分なタブをしたい場合は、最も簡単な方法は、単に数字の前に空白の項目を置くことですので、それは余分なタブ区切り作成://:

print('', *numbers, sep='\t') 
関連する問題