2012-04-26 63 views
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标准库的答案或可用于多种语言的一般模式。

回答

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]; 
} 

这样就避免了重复作业。

+0

哇,好了,这是一个为Python调用极为明显。谢谢,只要十分钟时间过去,我会立即将其设置为正确的答案 – eltommo 2012-04-26 07:31:46

0

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