python 循環刪除list中的元素

隨便寫的一個代碼, 發現不加紅框內的那句,可以輸出滿足條件的18個結果,而加上那句之後就只有9個輸出. 下面我們用一個簡單的例子來做演示:

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'就躲過了被刪除,以此類推...

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

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

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章