Python:For循环遍历列表list的坑

前几天写了个小脚本,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)

即可

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容