1. 程式人生 > >Python倒序遍歷

Python倒序遍歷

新的 .so lis 反轉 details -1 sed http 三種

技術分享

出現這個情況是因為,pop一次後list長度發生變化,第二次pop的是新的list了,

可以按從小到大的順序刪除,每刪除一個,後面要刪除的index都減去1: 第一次pop(1), 第二次pop(3-1)....

這裏直接給出通用解決方案:1、倒序循環遍歷;2、遍歷拷貝的list,操作原始的list。

倒序循環遍歷三種方法:http://blog.csdn.net/iflysoft/article/details/9013315

實現1:

source = [a,b,c,d,e,f,g,h]  # 要刪除這個list中index為2,4,6的元素,結果應該為a b d f h
del_list = [4,6,2] # 將被刪除的index編號,假設是無序的 for index in range(len(source)-1,-1,-1): # 循環順序7 6 5 4 3 2 1 0 for del_index in del_list: if index == del_index: source.pop(index) # 這樣倒序遍歷每次都刪除了del_list裏面index最大的,即source中最靠近尾部的元素 # 可以看出,實際上是這樣的刪除步驟, pop(6) pop(4) pop(2)也可以這樣:
del_list.sort(reverse=True) # del_list降序排列 for i in del_list: source.pop(i) print(source) # 以上兩種方法任選一種

實現2:

只是倒序遍歷方式不一樣,用的是列表切片的方式,(字符串也可以切片)

source = [a,b,c,d,e,f,g,h]
for i in source[::-1]:     #  list切片,這是創建了一個新list,可能占用內存
    print(i)               # h g f e d c b a

for
i in reversed(source): # 反轉list,也創建了一個新list print(i) # h g f e d c b a

Python倒序遍歷