我只是簡單地想要通過remove()
方法逐個刪除python列表中的所有元素,但找出不起作用。我運行下面的代碼:無法刪除python列表的最後一個元素
a=[1,2,3]
for i in a:
a.remove(i)
print a
,它顯示
[2]
我只是簡單地想要通過remove()
方法逐個刪除python列表中的所有元素,但找出不起作用。我運行下面的代碼:無法刪除python列表的最後一個元素
a=[1,2,3]
for i in a:
a.remove(i)
print a
,它顯示
[2]
發生了什麼事還有就是你正在改變一個列表,而你遍歷它,但名單上的迭代器將不會有更新你的改變。因此,當您在第一次迭代中刪除第一個元素(index = 0
)時,第二個元素(index = 1
)現在變成第一個元素(index = 0
),但迭代器下一次將返回第二個元素(index = 1
),而不是返回(再次)第一個元素已經改變並且被跳過。一步一步:
迭代器從索引0開始,這是元素1
。列表是[1, 2, 3]
。您刪除該元素,並以[2, 3]
結束。
迭代器移動到索引1,索引1是元素3
(注2已被跳過)。您刪除該元素並以[2]
結尾。
迭代器移動到索引2,該索引不存在,所以迭代結束。
非常感謝Danziger !!! – roland
這是一個[常見的陷阱(http://stackoverflow.com/documentation/python/3553/common-pitfalls/949/changing-the-sequence-you-are-iterating-over#t=201608202137582428236 ) –