如果我有一个数字列表,并且想使用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] >>>
但是必须有一种更简单的方法。
这是因为您仅获得列表中变量的引用。替换它时,只需更改该引用指向的内容,因此列表中的项目保持不变。对此的最佳解释是直观地进行跟踪-逐步执行该链接处的执行可视化,并且应该非常清楚。
请注意,可变对象可以在适当位置进行突变,这将影响列表(因为对象本身将发生变化,而不仅仅是您正在使用的名称指向的对象)。为了进行比较,请参见此处的可视化。
最好的选择是列表理解。
new_list = [num + 1 for num in old_list]