我只是想通过remove()
方法逐个删除python列表中的所有元素,但发现它不起作用。我运行以下代码:
a=[1,2,3]
for i in a:
a.remove(i)
print a
并显示
[2]
答案 0 :(得分:0)
当您迭代它时,您正在更改列表,但该列表上的迭代器将不会更新您的更改。因此,当您在第一次迭代中删除第一个元素(index = 0
)时,第二个元素(index = 1
)现在成为第一个元素(index = 0
),但迭代器将接下来返回第二个元素( index = 1
)元素而不是(再次)返回已更改且已被跳过的第一个元素。一步一步:
迭代器从索引0开始,即元素1
。列表是[1, 2, 3]
。您删除该元素,最后使用[2, 3]
。
迭代器移动到索引1,即元素3
(已跳过注释2)。您删除该元素,最后使用[2]
。
迭代器移动到索引2,该索引不存在,因此迭代结束。