python remove 去除重复元素 列表内存自动管理


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

运行结果:

[1, 2, 1, 2]

根据网上资料和教师的讲解,列表的remove()操作,由于列表的自动内存管理,会导致元素的移动。

按照我的推断,答案应该是

[1,1, 2, 2]

有人可以解释一下,实际的运行结果为什么是 [1, 2, 1, 2] 吗? 非常感谢~

因为每次你删除1的时候  列表的索引是在新的列表上进行操作的不是在原先的 

img

img

这个看一下就理解了:

lst = [1, 2, 3, 4, 5, 6, 7]

for i,v in enumerate(lst):
    print(lst, i, v)
    if i % 2 ==0:
        lst.remove(v)
        
print(lst)

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^