关于#python#的问题,请各位专家解答!

img

img

请问,为什么第二次循环,i变成了3,不应该是2吗?蒙圈中,请各位帮忙解答一下,感谢


lst = [1, 2, 3, 4, 5]
for i in lst:
    print(i)
    print(lst)
    lst.remove(i)
    print(lst)

img


[1, 2, 3, 4, 5],开始i取的不是列表中的值,而是列表中元素所在位置,从0开始,然后remove的是元素位置所对应列表中的值,因此1被删了。
剩下[2, 3, 4, 5],i为位置1,所对应的就是列表值为3,所有i=3,以此类推。

在遍历过程中删除元素,会导致列表所有元素前移

删掉了前面的,后面的就变序号了,但是 i 也是变的,所以就不是你要的样子咯,应该把要删的赋值到另一个变量上,这样比较不容易出错。或者你把 i 变一下。