我有一个列表:
>>> l = ['1', '2', '3', '4']
如果我使用join语句,
>>> s = ', '.join(l)
将输出为:
'1, 2, 3, 4'
但是,我要做的事如果我想要输出:
'1, 2, 3, 4,'
(我知道我可以使用字符串连接,但我想知道一些更好的方法)
答案 0 :(得分:13)
字符串连接是最好的方法:
l = ['1', '2', '3', '4'] # original list
s = ', '.join(l) + ','
但您还有其他选择:
映射到以逗号结尾的字符串,然后加入:
l = ['1', '2', '3', '4'] # original list
s = ' '.join(map(lambda x: '%s,' % x, l))
将空字符串附加到联接列表(不要修改原始l
列表!):
l = ['1', '2', '3', '4'] # original list
s = ', '.join(l + ['']).rstrip(' ')
使用字符串格式代替串联:
l = ['1', '2', '3', '4'] # original list
s = '%s,' % (', '.join(l))
答案 1 :(得分:6)
如果您使用的是Python 3,则可以利用print内置函数:
print(*l, sep=', ', end=',')
*l
解压缩元素列表,将它们作为单独的参数传递给sep
是一个可选参数,设置在从元素打印的元素之间,在这里我根据需要将其设置为', '
end
是一个可选参数,将被推送到结果打印字符串的和。我将其设置为','
,没有空间以满足您的需求您可以通过导入打印功能
从Python 2.6开始使用它from __future__ import print_function
然而,这种方式有几点需要注意:
file
可选参数的文件中的输出重定向到文件__future__
导入可能会破坏您的代码兼容性,因此如果代码的其余部分不兼容,您需要在单独的模块中隔离代码。长话短说,无论是这种方法还是其他建议的答案,我都要努力避免在+','
结果字符串的末尾添加join
答案 2 :(得分:4)
要使str.join()
起作用,迭代中包含的元素(即此处的列表)必须是字符串本身。如果你想要一个尾随逗号,只需在列表的末尾添加一个空字符串。
修改:为了充实它:
l = map(str, [1,2,3,4])
l.append('')
s = ','.join(l)
答案 3 :(得分:1)
要包含您显示的空格,您需要在分隔符字符串中包含空格:
s = ", ".join(l) + ","
或者制作DRYer:
sep = ", "
s = (sep.join(l) + sep).rstrip()
在后者中,rstrip()
仅用于删除最终的尾随空格(sep
的一部分),因为它不在您想要的输出中。这不是最便宜的方式,但很明显。
答案 4 :(得分:1)
首先,','.join(l)
根本不起作用,因为它要求元素是字符串,而不是字符串。
你可以修复它并添加如下的尾随逗号:
In [4]: ', '.join(map(str, l)) + ','
Out[4]: '1, 2, 3, 4,'
我认为这是迄今为止最干净的方式。
答案 5 :(得分:1)
如果你不想连接,事情可能会很糟糕......
>>> l = [1, 2, 3, 4]
>>> repr(l+[0])[1:-3] # or str
'1, 2, 3, 4,'
答案 6 :(得分:0)
这个IDLE会话是一个很好的例子,说明如何将列表元素拖入带有逗号的尾随字符串:
>>> l = ['1', '2', '3', '4']
>>> ' '.join(x+',' for x in l)
'1, 2, 3, 4,'
答案 7 :(得分:0)
我不知道这是不是你要找的?它虽然有效。
l = [1,2,3,4]
for num in l: print(str(num),end =“,”)