今天写算法的时候遇到了如下类似的情况:
fn_ = [[0,0] for _ in range(6)]
for index, fn in enumerate(fn_):
if index == 0:
fn_[2] = [1,1]
print(index, fn)
>>> 0 [0, 0]
1 [0, 0]
2 [1, 1]
3 [0, 0]
4 [0, 0]
5 [0, 0]
找了很久算法错误才发现发生了如上列表对象的动态遍历, 请问这是什么原理? 我一直以为循环时对象是不会改变的
列表是可变对象
第一行代码fn_ = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
然后第四行你判断是否索引等于0,也就是第一个元素,然后你做了修改fn_的第三个元素值为【1,1】
后面的元素都不变 然后就打印修改后的啊