如何在python中替换对象

Fab*_*nze 2 python

给出以下示例代码:

def myfunc(item):
  if item == 2:
    item = 1

mylist = [1,2,3]
for i in mylist:
  myfunc(i)
print(mylist) # output is [1, 2, 3]
# desired output is [1, 1, 3]
Run Code Online (Sandbox Code Playgroud)

我想要一个为列表的部分或全部元素调用的函数.此功能应该能够改变这些元素.

对于这个问题,最干净的解决方案是什么?

Sve*_*ach 7

如果您不需要就地修改列表,则可以使用新值创建新列表.为此,您的函数应该只返回新值:

def myfunc(item):
    if item == 2:
        return 1
    return item
Run Code Online (Sandbox Code Playgroud)

然后你可以使用map()或列表理解来构造新的列表:

mylist = [1, 2, 3]
print map(myfunc, mylist)
Run Code Online (Sandbox Code Playgroud)