首页 > 其他 > 详细

踩坑! 通过循环删除列表里的元素!漏删!

时间:2017-01-10 13:15:02      阅读:285      评论:0      收藏:0      [点我收藏+]
1 li = [1,2,3,4,5,6]
2 for i in li:
3     if i<3:
4         li.remove(i)
5 print(li)

 

#输出的结果是 [2,3,4,5,6]    2没有remove掉 是因为
#在第一次循环的时候,1 被remove掉了
#然后坑位由6个变为5个
#以后的一次往前排,2到了第一个坑位
#然后在迭代的时候,就是从第二个坑位开始迭代,就是从3开始
#所以2 就这么被忽略了!

 

 

解决:

我是在做飞机大战,子弹越界要删除的时候遇到的这个问题,子弹都保存在bullet_list

可以在 函数 里面定义一个 局部变量 remove_list

在局部变量里定义是因为局部变量只有在调用的时候才有,函数调完的时候remove_list也就没了,省的自己还要删除

 

1         for bullet in self.bullet_list:
2             if bullet.judge():
3                 self.remove_list.append(bullet)
4         for i in self.remove_list:
5             self.bullet_list.remove(i)

这个地方在判断的时候用.judge()方法,而不是直接对self.y<0进行判断,也是养成对函数封装的好习惯,尽量不要对属性直接进行操作

 

踩坑! 通过循环删除列表里的元素!漏删!

原文:http://www.cnblogs.com/timtike/p/6268885.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!