关于在list的值在循环中remove时出现的错误的总结
来源:互联网 发布:高级系统数据库工程师 编辑:程序博客网 时间:2024/06/07 00:08
# coding:utf-8a = [1,2,1,3,1,4,1,5,1,6,2,7,1,8]for b in a : if b == 1: a.remove(b) elif b == 2: a.remove(b) elif b ==3: a.remove(b) elif b == 4: a.remove(b) elif b == 5: a.remove(b) elif b == 6: a.remove(b) elif b == 7: a.remove(b) elif b == 8: a.remove(b)print a'''关于在列表的值在循环中remove是出现的错误的总结上面的结果理论上应该是a = []实际上结果是[3, 4, 5, 6, 2, 7, 8]原因是:list.remove(a) 移除列表中第一个与a匹配的值而for in 是按下标进行迭代的实际过程是a = [1,2,1,3,1,4,1,5,1,6,2,7,1,8]当 b = a[0] 即b = 1a.remove(1)此时a = [2,1,3,1,4,1,5,1,6,2,7,1,8]然后b = a[1] -> b = 1 a.remove(1)此时a = [2,3,1,4,1,5,1,6,2,7,1,8]b = a[2] -> b = 1 a.remove(1)此时a = [2,3,4,1,5,1,6,2,7,1,8]b = a[3] -> b = 1a.remove(1)此时a = [2,3,4,5,1,6,2,7,1,8]b = a[4] -> b = 1a.remove(1)此时 a = [2,3,4,5,6,2,7,1,8]b = a[5] -> b = 2a.remove(2)此时 a = [3,4,5,6,2,7,1,8]b = a[6] -> b = 1a.remove(1)此时 a = [3,4,5,6,2,7,8]列表搜索到最后一个下标了 循环结束'''# 解决办法1a = [1,2,1,3,1,4,1,5,1,6,2,7,1,8]list = []for b in a : if b == 1: a.remove(b) elif b == 2: a.remove(b) elif b ==3: a.remove(b) elif b == 4: a.remove(b) elif b == 5: a.remove(b) elif b == 6: a.remove(b) elif b == 7: a.remove(b) elif b == 8: a.remove(b) else: list.append(b)print list# 结果为空# 解决方法 2a = [1,2,1,3,1,4,1,5,1,6,2,7,1,8]for b in a[:] : if b == 1: a.remove(b) elif b == 2: a.remove(b) elif b == 3: a.remove(b) elif b == 4: a.remove(b) elif b == 5: a.remove(b) elif b == 6: a.remove(b) elif b == 7: a.remove(b) elif b == 8: a.remove(b)print a# 原因是a 与 a[:] 是两个不同的对象 不过它们两个对象储存的内容是一样的 # 例如两个男人一个叫张三 一个叫李四 虽然名字不一样 但他们都是男人 (大致的一个比喻)# 在 a [:]中遍历的是a[]中每一个值 没有remove()来改变a[:]的内容
参考:http://blog.csdn.net/guan666/article/details/71511948
阅读全文
0 0
- 关于在list的值在循环中remove时出现的错误的总结
- 关于List.remove在for循环中出现问题的解决方案
- 关于List.remove在for循环中出现问题的解决方案
- 关于List.remove在for循环中出现问题的解决方案
- 在for循环中remove list报错越界的问题
- 循环中使用List.remove的坑
- 总结在Hibernate学习中出现的错误
- python:在for遍历list时使用remove出现的问题以及解析
- 关于在Log4j中使用JDBCAppender时出现死循环的问题
- 关于在Log4j中使用JDBCAppender时出现死循环的问题
- list中remove容易略的错误
- 关于list的remove
- List,Map在遍历的时候remove
- 关于JAVA中使用remove方法循环删除list中元素的常见误区
- java中在for循环中remove元素时的陷阱
- 在servlet中出现classNotFound的错误
- 关于上个在foreach中ArrayList.Remove出错的解释
- List 循环中出现的问题
- 数据结构
- 【python】深浅拷贝
- PAT乙级1023. 组个最小数 (20)
- keil中如何实现在线仿真, 查看波形
- Belt Analyst 15(传送带仿真软件)免费下载附安装教程
- 关于在list的值在循环中remove时出现的错误的总结
- 【1701H1】【穆晨】【171211】连续第六十二天总结
- 注册登录页面跳转
- Java注册登录抽奖系统模块化设计
- mysql of python
- linux 用户和组管理
- JAVA入门笔记二
- Android Bundle类
- 用Makefile模拟实现进度条