Python_遍歷時刪除的處理&說明


遍歷時,建議不能直接進行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)

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM