给出以下示例代码:
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)
我想要一个为列表的部分或全部元素调用的函数.此功能应该能够改变这些元素.
对于这个问题,最干净的解决方案是什么?
如果您不需要就地修改列表,则可以使用新值创建新列表.为此,您的函数应该只返回新值:
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)