如何替换列表中的部分字符串?

Jon*_*han 0 python

我想在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'].

做上述事情的正确方法是什么?我知道我可以创建一个新列表,并将每个项目单独添加到新列表中,但这听起来像很多工作,可能需要两倍的内存.

kar*_*ikr 5

请注意,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)