单行不带括号的打印列表


162

我在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

注意:它必须在一行中。

Answers:


242
print(', '.join(names))

听起来很简单,它只接受列表中的所有元素,然后将它们加入', '


9
如果其中的某些元素names不是字符串,请print(', '.join(map(str,name)))改用。
匿名

78

这是一个简单的例子。

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

星标将列表解压缩并返回列表中的每个元素。


8
python 2.7.6,这是一个SyntaxError: invalid syntax
Fredrick Gauss

1
@FredrickGauss(如果添加)from __future__ import print_function也可以在python 2中使用。
安东尼·索特利

1
这是正确的答案,因为它也适用于非字符串。
otocan '18

41

通用解决方案,适用于非字符串数组:

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

9
这不符合规定的要求。请注意,OP的示例显示了不带引号的结果名称。
约翰Y

1
@SteveBennett您能否在回答中解释切片[1:-1]。我刚刚开始学习python。谢谢。
Charan

3
str(names)生成类似的字符串['Sam', 'Peter'...'Ann']。我们不需要方括号,因此不要从第二个字符切到倒数第二个字符。
Steve Bennett

22

如果输入数组是Integer类型,则需要先将数组转换为字符串类型 array,然后使用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
>>>

直接使用join来连接整数和字符串将抛出错误,如上所示。


18

有两个答案,首先是使用“ sep”设置

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

另一个在下面

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


7

','.join(list)仅当列表中的所有项目均为字符串时,该选项才有效。如果您希望将数字列表转换为逗号分隔的字符串。例如a = [1, 2, 3, 4]进入,'1,2,3,4'则可以

str(a)[1:-1] # '1, 2, 3, 4'

要么

str(a).lstrip('[').rstrip(']') # '1, 2, 3, 4'

尽管这不会删除任何嵌套列表。

将其转换回列表

a = '1,2,3,4'
import ast
ast.literal_eval('['+a+']')
#[1, 2, 3, 4]

4

您需要遍历列表并将end=" "其保持在一行上

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

OP说它必须在一行中。
阿里

2

打印(*名称)

如果您希望将它们以空格分隔的形式打印出来,那么它将在python 3中起作用。如果您需要逗号或介于两者之间的其他内容,请继续使用.join()解决方案


1

我不知道这是否像其他方法一样有效,但是简单的逻辑总是有效:

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(", ")

输出:

山姆,彼得,詹姆斯,朱利安·安


0

以下函数将接收列表并返回列表项的字符串。然后可以将其用于记录或打印目的。

def listToString(inList):
    outString = ''
    if len(inList)==1:
        outString = outString+str(inList[0])
    if len(inList)>1:
        outString = outString+str(inList[0])
        for items in inList[1:]:
            outString = outString+', '+str(items)
    return outString
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.