Python 遍歷時刪除的處理 說明

2021-09-17 02:51:54 字數 1330 閱讀 5474

遍歷時,建議不能直接進行remove刪除,會跳過某些元素

例項:a=[1,2,3,4,5] for i in a: a.remove(i) print a

a=[1,2,3,4,5]

for i in a:

a.remove(i)

print a

結果:[2,4]

remove:移除列表中某個值的第乙個匹配項:

s = [1,2,3,4,5]

s.remove(3)

s[1, 2, 4, 5]

按平常理解,應刪除所有內容,然而不是,因為具體過程如下:

1、當第一次刪除後,後面的元素會前移,此時a=[2,3,4,5], 

2、然後指標下一次會指向新列表的第二個元素(即初始狀態的第三個位置),從而初始狀態的第二個位置被跳過了,初始第三個位置被刪除,接著後面的元素又再次前移(變成[2,4,5]) 

3、指標指向新列表的第三個元素,即初始狀態的第5個元素5,然後5被刪除了,因此只剩下[2,4]

說明:*代表位置(可理解為指標位置)

[1,2,3,4,5](第一次位置在最開始)

*[2,3,4,5] (刪除乙個元素後,位置進入下乙個)

*[2,4,5] (刪除乙個元素後,位置進入下乙個)

*[2,4] (最後結果)

列印結果:

遍歷時建議不要進行remove刪除操作要

剔除某些元素,可參照如下方法:

例項:想清空列表l,只留元素4。

1、利用index來遍歷刪除列表l

l = [1,2,3,4,5]

for i in range(len(l)):

if l[i] == 4:

del l[i]

print(l)

2、建立新的list存放要刪除的元素

l = [1,2,3,4,5]

dellist =

for i in l:

if i == 4:

for i in dellist:

l.remove(i)

這樣也能達到預期刪除的效果

*遍歷時,刪除元素一定要注意,特別是有些操作並不報錯,但卻沒有達到預期的效果

STL容器遍歷時刪除元素

stl容器遍歷時在迴圈體內刪除元素最容易出錯了,根本原因都是因為迭代器有效性問題,在此記下通用刪除方法,該方法適用於所有含erase成員函式的序列容器 1 std vectormyvec 23 std vector iterator it myvec.begin 4while it myvec.en...

List遍歷時刪除遇到的問題

這週在開發中遇到了乙個以前沒遇到的小bug,在這裡記錄下來。list集合,我們平時都經常使用。但是,我在遍歷list集合時,呼叫了list集合的remove方法來刪除集合中的元素,簡單的 結構是這樣 for string x list 但是,就是類似這樣乙個簡單的小程式,在執行時,遇到了如下的異常資...

python 歷時 python 時間處理

在python中時間資料型別有date 日期 和time 時間 兩種資料型別。主要用到的模組包含,datetime,time以及calendar模組。時間型別 import datetime as dt now dt.datetime.now print now 結果為2016 10 05 09 1...