Python 列表迴圈刪除

2021-10-24 19:50:32 字數 1165 閱讀 9858

列表迴圈刪除中,第一次很容易採坑

如下面案例,我們想把列表中 2全部刪除

alist =[1

,2,3

,1,2

,2,3

,4]for i in alist:

if i ==2:

alist.remove(i)

print

(alist)

我們希望得到[1, 3, 1, 3, 4]

結果[1, 3, 1, 2, 3, 4,有乙個2漏掉了

for迴圈乙個list的時候,每次迴圈index索引+1。

如果這個時候動態的改變列表

比如第一次迴圈 索引index = 0, 下一次迴圈就是 index = 1

如果這個時候列表list動態的改變了,

例如index=1的元素前進的一位,變為index = 0位置了,這個時候就會漏掉,迴圈索引會找index=1的,但是你的index變為0了,就漏掉了。

alist =[2

,2,3

]for i in alist:

if i ==2:

alist.remove(i)

print

(alist)

# [2,3]

# 第一次迴圈,alist=[2,2,3] index=0,元素為2,刪掉。列表[2,2,3] -> [2,3]

# 第二次迴圈,alist=[2,3] index=1,元素為3,不刪。列表[2,3]

採用倒敘

或者拷貝乙個新列表迴圈

alist =[2

,2,3

]for i in alist[:]

:if i ==2:

alist.remove(i)

print

(alist)

alist =[2

,2,3

]for i in alist[::

-1]:

if i ==2:

alist.remove(i)

print

(alist)

python迴圈刪除列表元素

如果我們用最常用的方法使用for迴圈正向遍歷列表元素進行刪除,結果如下 一 索引遍歷列表迴圈刪除 執行結果報錯 因為for語句中range 方法按照列表a的長度生成了有序整數序列,但在遍歷過程中刪除了列表元素,實際列表長度已發生改變,而遍歷的序列仍是按原始列表的長度遍歷的,導致索引超出範圍 二 直接...

python迴圈刪除列表和字典

1 迴圈刪除列表中的元素lis 11 22,33 44,55 for i in range len lis del lis i 刪除報錯,因為刪除過程中,列表的下標會自動補齊到0 2 將偶數從列表中刪掉lis 11 22,33 44,55 for i in range len lis iflen i...

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