python中for循环删除时删不全的问题
上一篇 /
下一篇 2019-12-10 10:14:59
/ 个人分类:python笔记
以前遇到过一次,删除列表中符合条件的元素,for循环挨个判断是否符合条件,符合就删除,删完结果发现有一个符合条件的没有删掉。
那么如果想删除某些列表中的元素,比如有一个a列表,a=[11,22,33,44,55,66,77]
删除a中的22和33,应该如何做呢?
如果你这样写:
for
i in a:
if
i == 22 or i==33:
a.remove(i)
如果按照这样写,22被如期删掉了,但33却没有,删完的结果是:[11,33,44,55,66,77]不信你试试
为什么呢~~?请看以下分解图,假如内存中是这样的:
第一次循环,i指向11,条件不满足,不删除
第二次循环,i指向22,符合删除条件了,遂删除,则在内存中会变为:
注意喽,看到了嘛?现在33跑到原本22的位置上了,i现在指向了33,那么第三次循环,i就会继续向下指向44了,依次类推直到完成循环。
所以知道为什么上面那段代码会有问题了吧。那么怎么解决呢?
代码改成:
b=[]
for i in a:
if
i == 33 or i==44:
b.append(i)
for i in b:
if
i in a:
a.remove(i)
找一个临时列表b将要删除的东西存起来,然后再去原列表依次删
相关阅读:
- Python接口自动化测试框架思想以及源码结构 (旺达, 2019-11-28)
- 打包教你推荐系统的开源工具和框架 (旺达, 2019-11-29)
- 这些很好用却不被看好的Python库,你知道多少? (旺达, 2019-12-02)
- 经典Python测试题 (旺达, 2019-11-29)
- 从零到一百,如何快速学习新编程语言? (旺达, 2019-12-03)
- 聊一聊Python中的“垃圾”回收 (旺达, 2019-12-04)
- 从小开始学编程的小姐姐自述:我变成更好程序员的三点心得体会 (旺达, 2019-12-05)
- 还能这样?把Python自动翻译成C++ (旺达, 2019-12-06)
- 未编译的Python代码比Go慢100倍,编译后呢? (旺达, 2019-12-09)
- 如何把awk脚本移植到Python (旺达, 2019-12-10)
收藏
举报
TAG:
Python
python
for删除
删除不全