1. 程式人生 > >python list 遍歷刪除的正確方法

python list 遍歷刪除的正確方法

在遍歷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的長度進行遍歷,所以會造成索引溢位。

解決方案:倒序迴圈刪除

num_list = [1, 2, 3, 4, 5]
print(num_list)

for i in range(len(num_list)-1, -1, -1):   # for i in range(0, num_list.__len__())[::-1]
    if num_list[i] == 2:
        num_list.pop(i)
    else:
        print(num_list[i])

print(num_list)