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