遍歷n個元素的列表,每次迴圈時刪除當前元素,那麼要多少次結束迴圈呢。
arr = [0,1,2,3,4]for x in
arr:
print('
本次刪除的元素:
',x)
arr.remove(x)
print('
當前列表內容:
',arr)
print('
########in loop ########')
print('
----- out loop ------')
print(arr)
結果如下:
本次刪除的元素: 0當前列表內容:
[1, 2, 3, 4
]########
inloop ########
本次刪除的元素:
2當前列表內容:
[1, 3, 4
]########
inloop ########
本次刪除的元素:
4當前列表內容:
[1, 3
]########
inloop ########
----- out loop ------
[1, 3
]
當第乙個下標為0的元素被刪除後,後續元素依次補上來,原本下標為1的變為0。不過下一次迴圈對應的是下標為1的元素,這樣新的下標為0的元素就被"跳"過了。
總結來說,對列表for迴圈時,並不是動態的根據列表實際元素挨個遍歷的,而是按照列表初始的長度根據下標next下去的。
類似這樣吧:
int c=len(list)for(i=0; i)
另外,可能是因為字典和集合是無序的,不支援在迴圈的時候刪除其中的元素:
runtimeerror: dictionary changed size during iteration
runtimeerror: set changed size during iteration
Python迴圈中刪除列表元素會出現的 坑
python迴圈中刪除列表元素會出現的 坑 前言 在python中,如果在迴圈過程中remove 刪除列表元素可能會出現的一些不易發現的bug。目的 a 11,22,33,44,55,66,77 利用for迴圈刪除a中的33和44錯誤示例 for i in a if i 33 or i 44 a.r...
python迴圈刪除列表元素
如果我們用最常用的方法使用for迴圈正向遍歷列表元素進行刪除,結果如下 一 索引遍歷列表迴圈刪除 執行結果報錯 因為for語句中range 方法按照列表a的長度生成了有序整數序列,但在遍歷過程中刪除了列表元素,實際列表長度已發生改變,而遍歷的序列仍是按原始列表的長度遍歷的,導致索引超出範圍 二 直接...
如果在迴圈中刪除列表中的元素
我們在在討論這個問題之前,先考慮以下 的輸出結果 arraylist list newarraylist arrays.aslist a b c d for int i 0 isize i system.out.println list 輸出結果 b,d 以上 的目的是想遍歷刪除list中所有元素,...