列表元素串联的功能?

时间:2013-06-07 09:54:48

标签: python list function python-3.x

我想创建一个连接列表中所有字符串并返回结果字符串的函数。我试过这样的事情

def join_strings(x):
    for i in x:
        word = x[x.index(i)] + x[x.index(i) + 1]
    return word
#set any list with strings and name it n.
print join_strings(n)

但它不起作用,我无法弄清楚原因。解决问题或解决思路的任何方法?我提前谢谢你了!

1 个答案:

答案 0 :(得分:1)

对于实际工作,请使用''.join(x)

您的代码的问题在于您每次迭代都在更改word,而不保留以前的字符串。 试试:

def join_strings(x):
    word = ''
    for i in x:
        word += i
    return word

这是使用累加器的一般模式的示例。保存信息并通过不同的循环/递归调用更新的东西。这个方法几乎可以正常工作(word=''部分除外)用于连接列表和元组等,或者总结任何东西 - 实际上,它很接近于sum内置函数的重新实现。更接近的将是:

def sum(iterable, s=0):
    acc = s
    for t in iterable:
        acc += s
    return acc

当然,对于字符串,您可以使用''.join(x)获得相同的效果,并且通常(数字,列表等)可以使用sum函数。更普遍的情况是用一般操作替换+=

from operator import add
def reduce(iterable, s=0, op=add):
    acc = s
    for t in iterable:
        acc = op(w, s)
    return acc