我想创建一个连接列表中所有字符串并返回结果字符串的函数。我试过这样的事情
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)
但它不起作用,我无法弄清楚原因。解决问题或解决思路的任何方法?我提前谢谢你了!
答案 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