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