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

问题描述 投票:9回答:8

我有一个列表:

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

如果我使用join语句,

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

会给我输出为:

'1, 2, 3, 4'

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

'1, 2, 3, 4,'

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

.

python string list join
8个回答
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))

6
投票

如果您使用的是Python 3,则可以利用print内置函数:

print(*l, sep=', ', end=',')
  • *l解压缩元素列表,将它们作为单独的参数传递给print
  • sep是一个可选参数,设置在从元素打印的元素之间,在这里我根据需要将其设置为', '
  • end是一个可选参数,将被推送到生成的打印字符串。我把它设置为没有空间的','以满足您的需要

您可以通过导入打印功能从Python 2.6开始使用它

from __future__ import print_function

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

  • 这假设你想在stdout中输出结果字符串;或者您可以将带有file可选参数的文件中的输出重定向到文件中
  • 如果您使用的是Python 2,那么__future__导入可能会破坏您的代码兼容性,因此如果代码的其余部分不兼容,您需要在单独的模块中隔离代码。

长话短说,无论是这种方法还是其他提出的答案都是很多努力,试图避免在+','结果字符串末尾添加join


4
投票

要使str.join()工作,迭代中包含的元素(即此处的列表)必须是字符串本身。如果您想要一个尾随逗号,只需在列表末尾添加一个空字符串即可。

编辑:为了充实它:

l = map(str, [1,2,3,4])
l.append('')
s = ','.join(l) 

1
投票

要包含您显示的空格,您需要在分隔符字符串中有一个空格:

s = ", ".join(l) + ","

或者让它成为DRYer

sep = ", "
s = (sep.join(l) + sep).rstrip()

在后者中,rstrip()仅用于移除最终的尾随空间(sep的一部分),因为它不在您想要的输出中。这不是最便宜的方式,但很明显。


1
投票

首先,','.join(l)根本不会起作用,因为它要求元素是字符串,而它们不是。

您可以修复它并添加尾随逗号,如下所示:

In [4]: ', '.join(map(str, l)) + ','
Out[4]: '1, 2, 3, 4,'

我认为这是迄今为止最干净的方法。


1
投票

如果你不想连接,事情可能是hacky ......

>>> l = [1, 2, 3, 4]
>>> repr(l+[0])[1:-3] # or str
'1, 2, 3, 4,'

0
投票

这个IDLE会话是如何将列表元素拉入带有逗号的尾随字符串的一个很好的例子:

>>> l = ['1', '2', '3', '4']
>>> ' '.join(x+',' for x in l)
'1, 2, 3, 4,'

0
投票

我不知道这是不是你要找的?虽然它有效。

l = [1,2,3,4]

对于是否在升:打印(STR(NUM),结束= “”)

© www.soinside.com 2019 - 2024. All rights reserved.