无法删除python列表的最后一个元素

时间:2016-08-20 21:31:58

标签: python list

我只是想通过remove()方法逐个删除python列表中的所有元素,但发现它不起作用。我运行以下代码:

a=[1,2,3]
for i in a:
    a.remove(i)
print a

并显示

[2]

1 个答案:

答案 0 :(得分:0)

当您迭代它时,您正在更改列表,但该列表上的迭代器将不会更新您的更改。因此,当您在第一次迭代中删除第一个元素(index = 0)时,第二个元素(index = 1)现在成为第一个元素(index = 0),但迭代器将接下来返回第二个元素( index = 1)元素而不是(再次)返回已更改且已被跳过的第一个元素。一步一步:

  1. 迭代器从索引0开始,即元素1。列表是[1, 2, 3]。您删除该元素,最后使用[2, 3]

  2. 迭代器移动到索引1,即元素3(已跳过注释2)。您删除该元素,最后使用[2]

  3. 迭代器移动到索引2,该索引不存在,因此迭代结束。