如果我有一个数字列表,并且我想使用 for 循环递增它们,为什么这不起作用:
>>> list=[1,2,3,4,5]
>>> for num in list:
... num=num+1
...
>>> list
[1, 2, 3, 4, 5]
我希望得到 [2,3,4,5,6]。
我知道我可以通过这样做来解决这个问题
>>> newlist=[]
>>> for num in list:
... newlist.append(num+1)
...
>>> newlist
[2, 3, 4, 5, 6]
>>>
但必须有更简单的方法。
请您参考如下方法:
这是因为您只能获得对列表中变量的引用。当您替换它时,您只需更改该引用指向的内容,因此列表中的项目保持不变。最好的解释是follow it visually - 通过在该链接中找到的执行可视化,它应该非常清楚。
请注意,可变对象可以就地改变,这会影响列表(因为对象本身会发生变化,而不仅仅是您正在使用的名称所指向的名称)。如需比较,请参阅 the visualization here .
这里最好的选择是 list comprehension .
new_list = [num + 1 for num in old_list]
