python列表迴圈中刪除元素

2022-09-20 10:57:09 字數 1052 閱讀 2642

遍歷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中所有元素,...