在遍历可变容器(如列表)时更改Python不可变类型的方法

3

我想知道最符合Python风格的方法来实现以下内容,并使其正常工作:

strings = ['a','b']

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

显然这种方法在Python中行不通,但我想要达到的结果是:
strings = ['ac','bc']
最符合Python风格的实现方式是什么?

感谢您提供的好答案!

3个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
6
strings = ['a', 'b']
strings = [s + 'c' for s in strings]

strings[:] = .. 更改现有列表 - Jochen Ritzel

3

您可以使用列表推导式创建一个包含以下值的列表:[s + 'c' for s in strings]。您可以像这样就地修改列表:

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

但我发现,很多时候不需要进行原地修改。看看你的代码,看看是否适用。


1
你可以使用map函数来实现。
strings = ['a', 'b']
strings = map(lambda s: s + 'c', strings)

1
确保你获取了 map 的返回值。 - robert

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