li = [1,2,3,4,5,6]
for i in li:
if i<3:
li.remove(i)
print(li)

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

解决:

例子一:

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

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

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

         for bullet in self.bullet_list:
if bullet.judge():
self.remove_list.append(bullet)
for i in self.remove_list:
self.bullet_list.remove(i)

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

例子二:

100个人围成一圈,编号1-100,从1 到M 报号,报到M 的人,退出,知道一圈还剩下M-1个人, 这时候剩下几个人,最初的号码是多少

if __name__ == '__main__':
people_list = list(range(1,101))
M = int(input('请输入M:'))
count_num = 0
while 1:
remove_list = []
for people in people_list:
count_num += 1
if t%M == 0:
remove_list.append(people)
count_num = 0
for i in remove_list:
people_list.remove(i)
if len(people_list) <= M-1 :
for temp in people_list:
print(temp)
break

最新文章

  1. centos配置虚拟主机
  2. 关于idea 修改jsp文件后不能生效
  3. 快速与MySQL交互,使用XMAPP打开MySQL数据库,并用shell进行与MySQL交互&lt;Window 10&gt;
  4. 在Access中批量调用SQL语句
  5. 微软为Visual Studio开发助手拓展C++支持
  6. 【WinAPI】Windows Message 枚举常量收集
  7. Swift # 项目框架
  8. Xcode9的xib只支持iOS7.0及以上版本
  9. node+mysql 数据库连接池
  10. Vue源码之----为什么Vue中Array的pop,push等方法可以reactive,而Array[0]=&#39;a&#39;这样的方法不会reactive?
  11. C# 将DataTable转换成list (--分页--) 【Skip--Take】
  12. 寻路优化(一)——二维地图上A*启发函数的设计探索
  13. Oracle登录后提示ORA-12154:TNS:无法解析指定的连接标识符
  14. 分享一个 jsPDF的简单使用以及中文编码问题的解决
  15. linux怎么关闭iptables linux如何关闭防火墙
  16. 《剑指offer》— JavaScript(23)二叉搜索树的后序遍历序列
  17. 【shell】shell编程总结
  18. python开发_dbm_键值对存储_完整_博主推荐
  19. 关于OAuth的state参数的作用
  20. kill、PKill、xkill 和killall----杀死进程

热门文章

  1. iOS -- UILabel的常见使用
  2. P2051 中国象棋
  3. 在 iOS 中使用 iconfont
  4. iOS 时区获取问题
  5. 2016级算法第六次上机-D.AlvinZH的学霸养成记V
  6. python学习,day4:生成器,通过yield实现单线程情况下的并发运算
  7. Apache Maven的入门使用之常用操作以及核心概念介绍(2)
  8. 使用nginx+uwsgi+Django环境部署
  9. 【GIS新探索】算法实现在不规则区域内均匀分布点
  10. 那些H5用到的技术(6)——屏幕适配