前几天写了个小脚本,for循环遍历列表,但是在遍历期间对数组进行了删除元素的操作,给自己挖了坑
For循环遍历时实际是对list的角标进行了遍历,从第0个到最后一个
eg.
i=[a,b,c,a,a,b]
for index in i
if index == 'a'
i.remove(index)
print i
输出并不是[b,c,b]
步骤:
index=0,查到a,进行remove,获得i=[b,c,a,a,b]
index=1,查到c,不进行remove(i已经更新,角标为1处实际为c)
index=2,查到a,进行remove,获得i=[b,c,a,b]
index=3,查到b,不进行remove。已到达数组最大角标,结束。
结论:
不能直接删除
方案:
使用deepcopy复制一份列表进行遍历
j=deepcopy(i)
即可