2016-08-20 362 views
0

我只是簡單地想要通過remove()方法逐個刪除python列表中的所有元素,但找出不起作用。我運行下面的代碼:無法刪除python列表的最後一個元素

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

,它顯示

[2] 
+0

這是一個[常見的陷阱(http://stackoverflow.com/documentation/python/3553/common-pitfalls/949/changing-the-sequence-you-are-iterating-over#t=201608202137582428236 ) –

回答

0

發生了什麼事還有就是你正在改變一個列表,而你遍歷它,但名單上的迭代器將不會有更新你的改變。因此,當您在第一次迭代中刪除第一個元素(index = 0)時,第二個元素(index = 1)現在變成第一個元素(index = 0),但迭代器下一次將返回第二個元素(index = 1),而不是返回(再次)第一個元素已經改變並且被跳過。一步一步:

  1. 迭代器從索引0開始,這是元素1。列表是[1, 2, 3]。您刪除該元素,並以[2, 3]結束。

  2. 迭代器移動到索引1,索引1是元素3(注2已被跳過)。您刪除該元素並以[2]結尾。

  3. 迭代器移動到索引2,該索引不存在,所以迭代結束。

+0

非常感謝Danziger !!! – roland

相關問題