遍歷時,建議不能直接進行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]
1、remove解釋
remove:移除列表中某個值的第一個匹配項:
s = [1,2,3,4,5] s.remove(3) s [1, 2, 4, 5]
2、結果的說明:
按平常理解,應刪除所有內容,然而不是,因為具體過程如下:
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] (最后結果)
打印結果:
a=[1,2,3,4,5] for i in a: a.remove(i) print(a)

3、結論:
遍歷時建議不要進行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: dellist.append(i) for i in dellist: l.remove(i)
這樣也能達到預期刪除的效果
*遍歷時,刪除元素一定要注意,特別是有些操作並不報錯,但卻沒有達到預期的效果
