1

假设我有一个单词列表,我想将它们全部打印出来,用逗号和空格分隔。因此,例如,假设列表l包含项目['banana', 'apple', 'pear'],我想生成字符串"banana, apple, pear"

现在,我用来解决问题的方法如下:

s = ""
s += l[0]
for i in range(1, len(l)):
    s += ", %s" % l[i]

或与上述非常相似的东西。问题是第 2 行的额外分配看起来有点混乱和多余,因为它与第 4 行几乎相同,除了添加了一个逗号和一个空格。虽然这对于非常小的表达式来说不是太大的问题,但寻找大表达式可能会变得相当烦人和不愉快。例如,如果不是l[0],我们可能会foo(bar(l[0]) + foobar(l[0]) + ...觉得不得不在下面几行重复非常相似的语句是不对的。有没有更好的方法来实现所需的结果而无需额外的冗余?这可能包括特定于 python 标准库的答案或可以跨多种语言使用的通用模式。

4

3 回答 3

3

在 Python 中,可以简单地编写:

s = ', '.join(l)

例如:

>>> l = ['banana', 'apple', 'pear']
>>> ', '.join(l)
'banana, apple, pear'

这可能包括 [...] 可以跨多种语言使用的通用模式。

在其他语言中,我通常使用的模式如下(这里用伪 Java 表示):

for (int i = 0; i < l.length; i++) {
  if (i != 0) {
    s += ", ";
  }
  s += l[i];
}

这避免了重复分配。

于 2012-04-26T07:26:45.083 回答
0

你可以使用加入:s = ', '.join(l)

于 2012-04-26T07:26:48.290 回答
0

您可以使用str.join

", ".join(l)
于 2012-04-26T07:27:40.053 回答