我想在python 2.7中替换列表中的部分字符串,但这不符合我的预期:
>>> list = ['apples', 'oranges', 'bananas']
>>> for item in list:
... item=item.replace('app', 'spam')
...
>>> list
['apples', 'oranges', 'bananas']
Run Code Online (Sandbox Code Playgroud)
我期望输出为:['spamles', 'oranges', 'bananas'].
做上述事情的正确方法是什么?我知道我可以创建一个新列表,并将每个项目单独添加到新列表中,但这听起来像很多工作,可能需要两倍的内存.
请注意,list这不是一个好的本地变量名称.
你的代码不工作的原因是,你没有替换循环中的相应元素,你只是将它分配给局部变量.
试试这个:
x = ['apples', 'oranges', 'bananas']
for i, item in enumerate(x):
item=item.replace('app', 'spam')
x[i] = item
#Or just
#x[i] = item.replace('app', 'spam')
Run Code Online (Sandbox Code Playgroud)
演示:
>>> x = ['apples', 'oranges', 'bananas']
>>> for i, item in enumerate(x):
... item=item.replace('app', 'spam')
... x[i] = item
...
>>> x
['spamles', 'oranges', 'bananas']
>>>
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用列表推导:
>>> x = ['apples', 'oranges', 'bananas']
>>> x = [a.replace("app", "spam") for a in x ]
>>> x
['spamles', 'oranges', 'bananas']
>>>
Run Code Online (Sandbox Code Playgroud)