list.remove的功能删除指定的元素。最近在一次刷题中,发现了一个弊端。
remove会漏掉一些元素
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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',所以就漏掉一个元素。