直接上例子:
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]