为什么列表里的数据一样也没删掉啊

 

毫不委婉的说,写了个什么玩意?
1不需要f作为flag,直接把ls.remove直接写进去if里就行了
2.你始终i%i==0成立,所以f一直是1,为什么会执行ls.remove
3.(2,i)没理由使用元组,正常都是用列表

你好,我看你的代码应该是想删除列表里的所有单数吧?
看一下你的代码,
第五行 for j in range(2,i):
这个是什么意思?
第一次循环:
i是列表的第0项,就是23,
第一次内层循环:
j是range(2,i),就是2,这是f虽然等于0了,但是内层循环还没有循环完,没有执行外层循环的删除
继续看内层循环,第二次内层循环j就是3,而外层循环的i还是23...
想象一下,当内层循环循环完了,j=23,i=23,这时i%j=0,所以f等于1,还是没有执行外层循环的删除,
又进入下一次外层循环、内层循环,以此类推,每一次循环都是这样,都不执行删除的语句。
如果明白了再修改代码,如果还是不明白可以参考这个代码
ls=[23,45,78,87,11,67,89,13,243,
67,311,431,111,141]
for i in range(len(ls) - 1 , -1, -1):
if ls[i] % 2 != 0:
ls.remove(ls[i])#del list01[i]也可以
print(ls)

如有帮助,请采纳

你想做什么?
删除重复数据?

for i in range(len(ls)):
    for j in range(len(ls)-1,i, -1):
        if ls[j] == ls[i]:
            ls.remove(ls[j])

print(ls)



因为你这样写,最后i都会整除j,f始终等于1,不会删除任何值