列表迴圈刪除中,第一次很容易採坑如下面案例,我們想把列表中 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 結果如下...