2012-06-24 58 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

这是最成熟的解决方案。 –