心水Diana

博客园 首页 联系 订阅 管理

list.remove的功能删除指定的元素。最近在一次刷题中,发现了一个弊端。

remove会漏掉一些元素

1 a=['abc','qwa','qqq','5a6','1a05']
2 for i in a:
3     if 'a' in i :
4         a.remove(i)
5 print(a)
6 -----------------------输入结果为----------------
7 ['qwa', 'qqq', '105']
示例

可知,结果中'qaw'并没有被筛选出来

一番查阅才得知。

原因如下: List每remove掉一个元素以后,后面的元素都会向前移动 ,此时如果继续执行,则刚刚移过来的元素没有被读取。

a=['abc','qwa','qqq','5a6','1a05']
第一次remove,去掉了a[0],此时的a[1]元素'qwa'便向前移动成为a[0],而程序已经运行到了,a[1]->'qqq',所以就漏掉一个元素。

 

posted on 2018-03-13 15:30  心水Diana  阅读(218)  评论(0编辑  收藏  举报