我想在Python2.7中替换列表中字符串的一部分,但这不是我所期望的工作方式:
>>> list = ['apples', 'oranges', 'bananas']
>>> for item in list:
... item=item.replace('app', 'spam')
...
>>> list
['apples', 'oranges', 'bananas']
我希望输出是:['spamles', 'oranges', 'bananas']
。你知道吗
做上述事情的正确方法是什么?我知道我可能可以创建一个新的列表,并将每个项目单独添加到新列表中,但这听起来需要大量的工作,可能需要两倍的内存。你知道吗
请注意
list
不是一个好的局部变量名。你知道吗代码不起作用的原因是,没有替换循环中相应的元素,只是将其赋给局部变量。你知道吗
试试这个:
演示:
或者,可以使用list comprehensions:
这将为列表中的每个连续元素创建一个新引用(
item
)。然后将引用item
重新绑定到其他对象,然后将该引用丢弃。你知道吗过早的优化是。。一些邪恶的东西。可能不是所有的邪恶,而是其中的一部分。你知道吗
但说真的,临时创建一个包含3个(甚至3000个)字符串的列表的内存开销是不值得考虑的。只要列一个新的清单:
(不要给列表命名
list
,它会隐藏内置的)如果你绝对要改变你的清单:
虽然这不会创建一个新的列表(暂时节省内存),但它实际上会比列表理解版本慢,所以“优化”真的没有给你带来任何好处。你知道吗
您只需重新分配给名为
item
的变量,此时您需要分配给列表项:此代码仅用于演示。真正的解决方案是使用列表理解,就像@karthikr的答案一样。你知道吗
相关问题 更多 >
编程相关推荐