今天我发现一个有趣的事实,我无法在“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)
当您使用 循环列表时for i in my_list,i每次迭代时不会绑定到列表单元格。它绑定到列表单元格引用的对象。分配新值会i绑定i到新对象,但与列表之间没有会i导致列表单元格受到影响的链接。
循环列表的等效方法是
for index in range(len(my_list)):
i = my_list[index]
whatever_loop_body()
Run Code Online (Sandbox Code Playgroud)
希望这个公式更清楚,它i不是列表单元格的别名。(实际上不要循环这样的列表。)