遍歷列表同時刪除符合條件元素,結果不符合預期

2021-09-10 10:00:36 字數 515 閱讀 6141

num_list = [1, 2, 3, 4, 5]

print(num_list)

for item in num_list:

if item == 2 or item == 3 or item == 4 :

num_list.remove(item)

else:

print(item)

print(num_list)

執行結果:

[1, 2, 3, 4, 5]

1[1, 3, 5]

過程如下:

下標為0,item 取值1,不符合條件,沒有刪除  

下標為1,item 取值2,符合條件,刪除元素,這時 列表變為 [1, 3, 4, 5]

下標為2,item 取值4,符合條件,刪除元素,這時列表變為 [1, 3,  5]

下標為3,沒有繼續遍歷下去了。3這個值是沒有刪除的

因此,遍歷列表同時增減列表個數,需要先弄個列表副本,再遍歷副本,然後操作原列表

Python遍歷列表刪除多個列表元素

在遍歷list的時候,刪除符合條件的資料,結果不符合預期 num list 1,2,2,2,3 print num list for item in num list if item 2 num list.remove item else print item print num list 結果是 ...

Python遍歷列表刪除多個列表元素

在遍歷list的時候,刪除符合條件的資料,結果不符合預期 num list 1,2,2,2,3 print num list for item in num list if item 2 num list.remove item else print item print num list 結果是 ...

Python遍歷列表時刪除元素

本文首發於我的個人部落格suixin s blogpython的for迴圈可以遍歷乙個列表,但若需要同時將符合條件的元素刪除時,則會出錯。s 1 2,3 4,1 1 s1 s for i in s1 if i 1 s1.remove i print s1 輸出 2,3,4,1 另一種 s2 s fo...