遍歷時,建議不能直接進行remove刪除,會跳過某些元素
例項:a=[1,2,3,4,5] for i in a: a.remove(i) print a
a=[1,2,3,4,5]結果:[2,4]for i in a:
a.remove(i)
print a
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]2、建立新的list存放要刪除的元素for i in range(len(l)):
if l[i] == 4:
del l[i]
print(l)
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...