为什么下面的不改变传入的列表:
def modify(listarg):
for x in listarg:
x=x*2
而这确实会改变它:
def modify(listarg):
for x in range(len(listarg)):
listarg[x]=listarg[x]*2
最佳答案
第一个只是给你迭代变量 (x
),本质上 for...in
使用内置的 iter
函数。在第二种情况下,您实际上将值绑定(bind)到列表。
for x in listarg:
x=x*2
上面的代码可以看成:
i = iter(listarg)
x = i.next() # fetch first value
# this value then you double
# which won't effect the element
有关更多详细信息,您可以引用此 article .
关于python 列表突变(for in loop vs range(len)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27469981/