Python - 如何在for循环中将字符串连接起来?

29

我需要在循环中“将字符串连接起来”。简单来说,我有这个列表:

list = ['first', 'second', 'other']

在 for 循环内部,我需要以以下方式结束:

endstring = 'firstsecondother'

你能给我一些关于如何在Python中实现这个的线索吗?


23
不要将“list”用作变量名。 - Tim Pietzcker
1
一个相对较旧但仍然有趣的比较不同连接技术的网址:http://www.skymind.com/~ocrow/python_string - georg
5个回答

83

那不是正确的做法。

>>> ''.join(['first', 'second', 'other'])
'firstsecondother'

这就是你想要的。

如果你使用 for 循环来完成,那么效率会比较低,因为字符串“加法”/连接不会很好地扩展(但当然可以实现):

>>> mylist = ['first', 'second', 'other']
>>> s = ""
>>> for item in mylist:
...    s += item
...
>>> s
'firstsecondother'

1
我需要在一个for循环中完成它,我需要在for循环中添加一些逻辑。在for循环内部完成这个任务是可能的吗? - André
2
@André 根据您需要的逻辑(对元素进行某些转换?一些不相关的副作用?),将字符串构造从循环中提取出来或创建转换后的元素,然后应用于连接它们可能是有意义的。在循环中天真地执行此操作可能会对性能产生非常严重的影响(例如,二次减速=添加一个字符串,需要两倍相同的时间;这不是一个好习惯)。 - user395760
有没有Pythonic的方法可以返回“first + second + other”? - steven
1
@steven: ' + '.join(['first', 'second', 'other']) @史蒂文:' + '.join(['第一', '第二', '其他']) - Tim Pietzcker
1
准备一个结果列表进行追加,最后使用join()方法连接。 - Gringo Suave
显示剩余3条评论

8
endstring = ''
for s in list:
    endstring += s

2
低效,使用join()。 - Gringo Suave

6
如果必须使用for循环,可以这样实现:
mylist = ['first', 'second', 'other']
endstring = ''
for s in mylist:
  endstring += s

但是您应该考虑使用join()

''.join(mylist)

1
效率低下,使用 join()。 - Gringo Suave

3

这应该可以工作:

endstring = ''.join(list)

嗨,谢谢回复。但我真的需要在for循环内部完成它。这是可能的吗? - André
3
你可以在循环中将字符串添加到列表中,然后在循环结束后将它们合并。这比在循环内部附加字符串要高效得多(事实上,这是推荐的方式)。 - Óscar López

1

虽然 "".join 更符合 Python 的风格,也是这个问题的正确答案,但确实可以使用 for 循环。

如果这是一项作业任务(如果是,请添加标签!),并且你必须使用 for 循环,那么以下代码可以解决问题(虽然不符合 Python 的风格,如果你是一名专业的 Python 程序员,不应该这样做):

endstring = ""
mylist = ['first', 'second', 'other']
for word in mylist:
  print "This is the word I am adding: " + word
  endstring = endstring + word
print "This is the answer I get: " + endstring

你不需要那些'prints',我只是把它们放在那里让你看到正在发生的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接