为什么我不能在 python 的 for 循环中重新分配变量?

Zen*_*Zen -1 python for-loop

今天我发现一个有趣的事实,我无法在“for 循环”中重新分配变量,但为什么呢?

这是我的代码:

>>> my_list = [1,2,3,4,5]
>>> for i in my_list:
>>>     if i > 3:
>>>        i = 'my_value'
>>> my_list
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

use*_*ica 5

当您使用 循环列表时for i in my_listi每次迭代时不会绑定到列表单元格。它绑定到列表单元格引用的对象。分配新值会i绑定i到新对象,但与列表之间没有会i导致列表单元格受到影响的链接。

循环列表的等效方法是

for index in range(len(my_list)):
    i = my_list[index]
    whatever_loop_body()
Run Code Online (Sandbox Code Playgroud)

希望这个公式更清楚,它i不是列表单元格的别名。(实际上不要循环这样的列表。)