案例**:
def乍一看以為會列印出空列表,因為test函式內通過for的方法將data中的元素都刪除了,其實不然,實際輸出如下:test(data):
for i in
data:
data.remove(i)
return
data
data = [1, 2, 3]
print(test(data))
[2]為什麼會產生這種結果呢? 我們來深度剖析一下:原列表在記憶體中為:
第一次執行到data.remove(i)時將第乙個元素『1』刪除,列表變為:
第二次執行到data.remove(i)時i為第二個元素,即『3』,此時將『3』刪除,列表變為:
此時列表已經沒有第三個元素了,即退出迴圈,將[2]返回。
直接上**:
def此時再執行,發現輸出結果為空列表 倒序刪除原理如下:原列表在記憶體中為:test(data):
for i in data[::-1]:
data.remove(i)
return
data
data = [1, 2, 3]
print(test(data))
第一次執行到data.remove(i)時是將倒數第乙個元素『3』刪除,列表變為:
第二次執行到data.remove(i)時i為倒數第二個元素,即『2』,此時將『2』刪除,列表變為:
第三次執行到data.remove(i)時i為倒數第三個元素,即『1』,此時將『1』刪除,列表變為空列表!
Python3中用for迴圈刪除列表中元素的坑
定義乙個學生類,例項屬性有name 姓名 age 年齡 提示使用者分別輸入3個學生資訊 姓名以及年齡 根據使用者輸入的資訊建立3個學生物件,將這3個學生物件存入列表,遍歷列表刪除年齡小於18歲的學生物件,最後輸出列表中剩餘的學生資訊 class student object def init sel...
Python 列表迴圈刪除
列表迴圈刪除中,第一次很容易採坑 如下面案例,我們想把列表中 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漏掉了 fo...
python迴圈刪除列表元素
如果我們用最常用的方法使用for迴圈正向遍歷列表元素進行刪除,結果如下 一 索引遍歷列表迴圈刪除 執行結果報錯 因為for語句中range 方法按照列表a的長度生成了有序整數序列,但在遍歷過程中刪除了列表元素,實際列表長度已發生改變,而遍歷的序列仍是按原始列表的長度遍歷的,導致索引超出範圍 二 直接...