在迭代可变容器(如list)时更改python不可变类型

时间:2010-11-20 18:29:59

标签: python types iteration immutability

我想知道做出以下操作的最pythonic方法是什么,并让它工作:

strings = ['a','b']

for s in strings:  
    s = s+'c'

显然这在python中不起作用,但我想要实现的结果是
strings = ['ac','bc']
什么是实现这种结果的最pythonic方式?

感谢您的答案!

3 个答案:

答案 0 :(得分:6)

strings = ['a', 'b']
strings = [s + 'c' for s in strings]

答案 1 :(得分:3)

您可以使用列表推导来创建包含以下值的列表:[s + 'c' for s in strings]。您可以就地修改列表,如下所示:

for i, s in enumerate(strings):
    strings[i] = s + 'c'

但我发现很多时候不需要就地修改。查看您的代码,看看是否适用。

答案 2 :(得分:1)

您可以使用地图功能。

strings = ['a', 'b']
strings = map(lambda s: s + 'c', strings)