list = [1,2,3,4,5,6] for i in list: if i==1

list = [1,2,3,4,5,6] for i in list: if i==1 or i==2 or i==3: list.remove(i) print(i) print(list) 结果: 1 3 5 6 [2,4,5,6] 有人能说下执行顺序吗

明白了,remove删除元素后,列表改变了,但for循环的i是根据下标查找的,所以第二次循环的i值变为了3

这种建议自己debug一下就知道了。我只告诉你list删除1(list[0])之后,下一个循环进来的时候,i=list[1]==3,此时list[0]=2,但是你的索引是1,list[1]=3,所以跳过了2

1. 这个循环会取下标+1的元素。

2. 第一次,取下标为0的元素,i为1,移除1。[2,3,4,5,6]

3.第二次,取下标为1的元素,i为3,移除3。[2,4,5,6]

4.第三次,取下标为2的元素,i为5,不进行remove操作。

5.第四次,取下标为3的元素,i为6,不进行remove操作。

而且一般集合删除元素,都是倒序删除