如果我們用最常用的方法使用for迴圈正向遍歷列表元素進行刪除,結果如下:
一、索引遍歷列表迴圈刪除:
執行結果報錯:因為for語句中range()方法按照列表a的長度生成了有序整數序列,但在遍歷過程中刪除了列表元素,實際列表長度已發生改變,而遍歷的序列仍是按原始列表的長度遍歷的,導致索引超出範圍
二、直接遍歷列表元素迴圈刪除(正向遍歷):
執行結果:未按要求刪除所有值為4的元素
因為當刪除乙個元素後該元素後面未遍歷的元素均會向前移動乙個位置,導致後面的元素索引值-1,下乙個要遍歷的元素移動到當前已遍歷元素的位置,導致漏刪。
正向遍歷:刪除過程中未遍歷的元素索引位置不停在發生改變
迴圈刪除列表所有元素的正確方法:
1、while迴圈刪除:
2、反向遍歷列表迴圈刪除:
從列表末尾開始遍歷元素時,刪除乙個元素後面的元素向前移動乙個位置,但後面的元素已經遍歷過了所以不會存在漏刪的情況
總結:
1、不能通過索引遍歷迴圈刪除元素,因為刪除元素後列表實際長度在發生改變;
2、通過直接遍歷元素刪除時,必須反向遍歷刪除,因為刪除元素後,索引位置發生改變的是已遍歷過的元素,對未遍的元素無影響,不存在漏刪的情況;
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刪除列表元素 Python列表元素分組
比如列表 0,0,0,1,1,2,3,3,3,2,3,3,0,0 分割成 0,0,0 1,1 2 3,3,3 2 3,3 0,0 如何解決這樣的問題呢?1 首先說明,如果這樣的題目都不能寫出 原因在基本的迴圈判斷沒有搞清楚。2 黃哥在如何訓練自己的程式設計思路 文章所說的,做習題,要像開發專案的流程...
Python迴圈列表刪除元素問題
有人會遇到這種問題,遍歷列表,想刪除列表中的某幾個元素,執行後發現有些並沒有刪除到,比如以下 a 1,2,3,4,5,6 print a for i in a if i 3 or i 4 a.remove i print a 從 看主要就是想刪除a列表中的 3 4 元素,程式的結果是 1,2,3,4...