明白了,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操作。
而且一般集合删除元素,都是倒序删除