Python迴圈中刪除列表元素會出現的 坑

2021-09-27 03:57:23 字數 737 閱讀 7562

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.remove(i)

#輸出結果:a=[11,22,44,55,66,77]

#並沒有刪除44,因為在刪除33之後,44填補了33的位置成為了a[2],(就像排隊一樣,如果有

#人離開,後面的人就會自動往前走),而此時在for迴圈中i的值已經變為了a[3],因此,變為

#a[2]的44「逃過了一劫」

正確示例:

#為了盡量避免上面這種錯誤的發生,我們可以將要刪

#除的元素在迴圈外刪除,先將其存在另乙個列表中。

b=for i in a:

if i==33 or i==44:

for i in b:

a.remove(i)

#輸出結果:b=[33,44]

a=[11,22,55,66,77]

python列表迴圈中刪除元素

遍歷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 結果如下...

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