206

我有一个 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

注意:它必须在一行中。

4

13 回答 13

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

就像听起来一样,这只是获取列表的所有元素并将它们与', '.

于 2012-06-24T14:01:07.273 回答
98

这是一个简单的。

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

星号解包列表并返回列表中的每个元素。

于 2016-01-31T20:24:27.460 回答
56

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

>>> print str(names)[1:-1]
'Sam', 'Peter', 'James', 'Julian', 'Ann'
于 2013-02-04T02:45:41.083 回答
26

如果输入数组是整数类型,那么您需要先将数组转换为字符串类型数组,然后使用任何您想要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 将连接整数和字符串将抛出如上所示的错误。

于 2016-10-06T07:38:19.157 回答
20

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

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

另一个在下面

>>> print(', '.join(names))
于 2017-03-01T04:20:30.447 回答
11

这就是你需要的

", ".join(names)
于 2012-06-24T14:02:40.050 回答
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]
于 2019-01-24T11:26:59.730 回答
6

对于整数类型的数组,我们需要先将其更改为字符串类型,然后使用连接函数来获得不带括号的干净输出。

    arr = [1, 2, 3, 4, 5]    
    print(', '.join(map(str, arr)))

输出 - 1、2、3、4、5

对于字符串类型的数组,我们需要直接使用join函数来获得不带括号的干净输出。

    arr = ["Ram", "Mohan", "Shyam", "Dilip", "Sohan"]
    print(', '.join(arr)

输出 - Ram、Mohan、Shyam、Dilip、Sohan

于 2020-07-22T00:22:46.423 回答
6

尝试在带有打印语句的列表名称之前使用星号:

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

输出:

Sam Peter James Julian Ann
于 2020-12-11T11:45:57.753 回答
4

打印(*名称)

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

于 2019-11-17T11:37:23.777 回答
3

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

names = ["Sam", "Peter", "James", "Julian", "Ann"]
    index=0
    for name in names:
        print(names[index], end=", ")
        index += 1
于 2015-04-29T00:32:22.447 回答
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(", ")

输出:

山姆、彼得、詹姆斯、朱利安、安

于 2016-02-25T12:59:24.790 回答
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
于 2019-06-15T17:01:17.423 回答