python学习之不要在列表迭代的时候进行增删操作

注意:列表不能在for循环时使用remove方法

li = [11,22,33,44]
for i in li :
    li.remove(i)
print (li)
#输出
[22, 44]

​ for的运行过程,会有⼀个指针来记录当前循环的元素是哪一个, ⼀开始这个指针指向第0个,然后获取到第0个元素,紧接着删除第0个;这个时候,原来是第一个的元素会⾃动的变成第0个,然后指针向后移动⼀次, 指向1元素;此时原来的1已经变成了0, 原来的2变成了1,出现跳着删除的现象。

​ pop同样不能再for循环中进行操作,直接会报错。

li = [11,22,33,44]
for i in li :
    li.pop(i)
print (li)
#输出报错信息
IndexError: pop index out of range

del同样不能在for循环中进行操作

总结:由于删除元素会导致元素的索引改变, 所以容易出现问题。尽量不要再循环中直接去删除元素,可以把要删除的元素添加到另一个集合中然后再批量删除。

仅供参考,欢迎指正
原文地址:https://www.cnblogs.com/jjzz1234/p/10994849.html