2012-06-24 61 views
65

我在Python中有一個列表 單排沒有括號的打印列表

names = ["Sam", "Peter", "James", "Julian", "Ann"] 

我想打印在單個行中的陣列而不正常的「[]

names = ["Sam", "Peter", "James", "Julian", "Ann"] 
print (names) 

會給輸出作爲;

["Sam", "Peter", "James", "Julian", "Ann"] 

這不是我想要的格式相反,我希望它是這樣的;

Sam, Peter, James, Julian, Ann 

注意:它必須在一行中。

回答

107
print ', '.join(names) 

這,就像它的聲音,只是需要在列表中的所有元素,並與', '加入他們。

+1

>>>名= 「山姆」, 「彼得」, 「詹姆斯」 ,「朱利安」,「安」] >>> print','。join(names)SyntaxError:無效的語法它不工作「FatalError」 – Isuru

+10

@IsuruMalakaSamarasinha如果這是python 3,那麼自然需要調用print *函數*(它是Python 2中的關鍵字),即' print(','.join(names))'。 – FatalError

+0

如何用字典執行此操作? –

8

這就是你需要

", ".join(names) 
+0

它將結果包裝在引號中。 –

24

通用的解決方案,適用於非字符串數組:

>>> print str(names)[1:-1] 
'Sam', 'Peter', 'James', 'Julian', 'Ann' 
+0

顯然,有多種方法可以做到這一點。 – Max

+8

這不符合規定的要求。請注意OP的示例,顯示不帶引號的結果名稱。 –

+0

好點。 (...) –

3

您可以通過列表需要循環,並使用end=" "保持它在同一行

names = ["Sam", "Peter", "James", "Julian", "Ann"] 
    index=0 
    for name in names: 
     print(names[index], end=", ") 
     index += 1 
+0

OP表示它必須在一行中。 – Ali

23

這是一個簡單的。

names = ["Sam", "Peter", "James", "Julian", "Ann"] 
print(*names) 

星星解開列表並返回列表中的每個元素。

+5

在'python 2.7.6'中,這是一個'SyntaxError:invalid syntax'。 –

+1

這不會在元素之間放置逗號。 –

+4

只需添加額外的參數sep: print(* names,sep =',') –

0

我不知道這是否是有效的爲別人,而是簡單的邏輯總是工作:

import sys 
name = ["Sam", "Peter", "James", "Julian", "Ann"] 
for i in range(0, len(names)): 
    sys.stdout.write(names[i]) 
    if i != len(names)-1: 
     sys.stdout.write(", ") 

輸出:

Sam, Peter, James, Julian, Ann

10

如果輸入數組是整型,那麼你需要首先將數組轉換成字符串類型數組然後用join方法加入,空間 任何你想要的。例如:

>>> arr = [1, 2, 4, 3] 
>>> print(", " . join(arr)) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: sequence item 0: expected string, int found 
>>> sarr = [str(a) for a in arr] 
>>> print(", " . join(sarr)) 
1, 2, 4, 3 
>>> 

直接使用將加入整數和字符串的連接會引發錯誤,如上所示。

+0

如何用字典執行此操作 –

6

有兩個答案,一是使用 '月' 設置

>>> print(*names, sep = ', ') 

另一種是低於

>>> print(', '.join(names)) 
+0

這是最成熟的解決方案。 –