我很困惑。当我运行以下代码时,我假设列表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循环中,并对其进行迭代。删除项目时,"长度"将保持不变。