python五之for删除陷阱

来源:互联网 发布:dnf一直网络中断 编辑:程序博客网 时间:2024/06/05 11:23
       最近模仿原样改善的一个python写的飞机大战游戏,里面有一部分要删除已出局的子弹,当写到这里时,想起了一个扩展的知识点,就在在循环中删除元素时是有坑的。例如:
a=[11,22,33,44,55,66,77]  
我们执行一个循环 :
for  i  in  a:
       printf(i)
       if i==33 or i==44:
             a.remove(i)
当我们执行到a列表的第三个元素时,即i==33时,33被删除。
然后列表中会少了一个一个元素,空出一个位置,44以及后面元素将依次补上去,最后那个位置空出,即没有了,此时i继续循环,循环到下一个位置,即a列表的第四个位置,即i==55,此时我们发现44被遗漏了。所以这个就是我们说的循环中删除元素是有坑的,即漏删,因此循环中不能随便删除。

     如若我们想在执行一次删除操作的时候改变这个bug,那么我们可以将我们选择出的要删除的元素存储起来,然后进行删除,如:
for i in a:
     if i==33 or  i==44:
         b.append(i)
for i in b:
    a.remove(i)
此时,便可以正常的删除了。

新手小白,欢迎指教。

原创粉丝点击