我們直接先給出輸出與預期不同的程式碼

In[28]: a = [1,2,3,4,5,6]
In[29]: for i in a:
   ...:     a.remove(i)
   ...:     
In[30]: a
Out[30]: [2, 4, 6]

在上述for迴圈中,假設我們刪除了index=2的值,原本index=3及之後的值會向前補位,所以在迴圈中就跳過了原index=3的變數
同理,使用list.pop()函式刪除指定元素的時候,也會出現上述情況,如:

In[33]: a = [1,2,3,4,5,6]
In[34]: for index, value in enumerate(a):
   ...:     a.pop(index)
   ...:     
In[35]: a
Out[35]: [2, 4, 6]

如果我們想迴圈刪除列表中的元素,較簡單的可用方法有:用一個臨時列表儲存待刪除的元素,在for迴圈臨時列表來刪除老列表中的元素;或者直接用剩餘元素列表覆蓋原列表

.