Skip to main content
 首页 » 编程设计

python之为什么我不能使用 for 循环 (python) 更改或重新分配列表中变量的值

2025年05月04日10tuyile006

如果我有一个数字列表,并且我想使用 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]