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

2021-09-22 12:36:14 字數 1279 閱讀 2215

在遍歷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)

結果是: 

或者有:

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

print(num_list)

for i in range(len(num_list)):

if num_list[i] == 2:

num_list.pop(i)

else:

print(num_list[i])

print(num_list)

結果報錯:

原因是,刪除list中的元素後,list的實際長度變小了,但是迴圈次數沒有減少,依然按照原來list的長度進行遍歷,所以會造成索引溢位。

1.把列表拷貝,然後對原列表進行刪除操作就沒問題了

num_list[:]是對原始的num_list的乙個拷貝,是乙個新的list,所以,我們遍歷新的list,而刪除原始的list中的元素,則既不會引起索引溢位,最後又能夠得到想要的最終結果。此方法的缺點可能是,對於過大的list,拷貝後可能很佔記憶體。 

2.從後往前遍歷列表,刪除

3.filter函式

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同步遍歷多個列表

python的for迴圈十分靈活,使用for迴圈我們可以很輕鬆地遍歷乙個列表,例如 a list z c 1,5,m for each in a list print each 但是,有時遍歷乙個列表並不能滿足我們的需求,在一些特殊的場合,我們可能會需要遍歷兩個甚至多個列表,例如,有兩個列表,第乙個...

Python同步遍歷多個列表

使用python中的zip 函式 zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 號操作符,可以將元組解壓為列表。title user time elements chro...