python,从列表中删除项目

python, removing items from list

我很困惑。当我 运行 以下代码时,我假设列表 l 以空结尾但总是以一个剩余项目结尾,即:

l = [1,2,3]
for item in l: 
    l.remove(item)
    
print(l) 

结果是[2]

但是如果我再次运行相同的循环,列表最终会被清空

for item in l: 
    l.remove(item)
    
print(l)

结果是[]

当然我做错了什么,但现在我得到的是非常烦人的。

如果有人能向我解释发生了什么,我将不胜感激。

谢谢

有一个简单的修复方法,只需执行此操作

l = [1,2,3]
for item in list(l): 
    l.remove(item)
    
print(l) 

您的方法不起作用的原因是您在删除列表中的项目时迭代列表。但是,如果对 l 使用 list 方法,则将列表的临时副本传递到 for 循环并对其进行迭代。删除项目时,长度将保持不变。