使用Python中的尾随逗号连接或打印列表元素

时间:2012-04-25 07:37:36

标签: python string list join

我有一个列表:

>>> l = ['1', '2', '3', '4']

如果我使用join语句,

>>> s = ', '.join(l)

将输出为:

'1, 2, 3, 4'

但是,我要做的事如果我想要输出:

'1, 2, 3, 4,'

(我知道我可以使用字符串连接,但我想知道一些更好的方法)

8 个答案:

答案 0 :(得分:13)

字符串连接是最好的方法:

l = ['1', '2', '3', '4']  # original list
s = ', '.join(l) + ','

但您还有其他选择:

  1. 映射到以逗号结尾的字符串,然后加入:

    l = ['1', '2', '3', '4']  # original list
    s = ' '.join(map(lambda x: '%s,' % x, l))
    
  2. 将空字符串附加到联接列表(不要修改原始l列表!):

    l = ['1', '2', '3', '4']  # original list
    s = ', '.join(l + ['']).rstrip(' ')
    
  3. 使用字符串格式代替串联:

    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

然而,这种方式有几点需要注意:

  • 这假设您要在stdout中输出结果字符串;或者您可以将带有file可选参数的文件中的输出重定向到文件
  • 如果您使用的是Python 2,__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 =“,”)