python循環刪除list中的元素


直接上例子:

a = [1,2,3,4,5,6]
for i  in a:
    a.remove(i)
print(a)
返回:[2, 4, 6]

循環a,想刪除a的所有元素,但實際確有數據保留了下來,這是為什么呢,為什么呢!!!

因為在循環a,並刪除a的元素時,列表的位置發生了移位,當刪除“1”后,第二個元素“2”補位,這樣“2”就躲過了被刪除的命運,輪到“3”了,“3”被刪除之后,“4”來補位,逃過一劫,以此類推!!

所以在循環list時,不能循環的同時刪除自身元素

解決的辦法:新建一個相同的臨時列表,用for循環臨時列表,刪除原列表中的元素!

例子:

b = [1,2,2,4,3,2,1,6,8]
c = b[:]
for i in c:
    if i%2 ==0:
        b.remove(i)
print(b)
返回
[1, 3, 1]

 


免責聲明!

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



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