1. 程式人生 > >在for迴圈遍歷列表的過程中不能刪除列表中的元素

在for迴圈遍歷列表的過程中不能刪除列表中的元素

在刷題的時候碰到一件很有意思的事,就是在Python中用迴圈遍歷列表中元素的時候,感覺還是按照下標進行訪問的,這時如果刪除掉了已經遍歷到的元素的時候,那麼刪除元素之後的列表的下標會重新排序,但是迴圈還是按照迴圈開始的時候列表的下標進行訪問的,這時會導致有些元素訪問不到的情況。具體見程式碼。

words = ["a", "b", "c", "d"]
flag = 1

for word in words:
    print(word)
    if flag == 1:
        words.remove(word)
        flag = 0

執行的結果

a
c
d

一開始的下標是[a,b,c,d]對應[0,1,2,3],刪除了a之後,[b,c,d]下標為[0,1,2],但是由於第二輪迴圈遍歷的下標是1,這時迴圈就訪問c,跳過了b。