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