1. 程式人生 > 程式設計 >python列表的逆序遍歷實現

python列表的逆序遍歷實現

引題:該題源自一個網友的求助,作為水群龍王的我義不容辭的接下了這道題目,先來看題目:

python列表的逆序遍歷實現

拿到這道題,題目的意思已經很清楚了,列表裡含有2的元素都需要刪除,然後輸出刪除後的新列表。我首先想到的思路就是使用for迴圈遍歷字串,利用字串操作符x in s(如果x是s的子串,返回True,否則返回False),使用if函式 ,若為True則刪除(remove)該元素。最終輸出新列表。

思路程式碼及執行結果如下(這是錯的)

python列表的逆序遍歷實現

錯誤例項

觀察輸出結果,跟原列表相比雖然剔除了一些含2的元素,但是並沒有完全剔除,為什麼?

來分析一下python是根據列表元素的下標來遍歷的。於是最開始元素123下標為1,元素212下標為2。第一遍迴圈執行了s.remove,刪除了元素123。當進入第二遍迴圈時!!!重點來了,注意 此時元素123已經是被刪除了, 所以元素212的下標由1變成了0,元素434下標由2變成了1。而下標為0已經在第一遍迴圈中執行了,故第二遍迴圈會尋找下標為1的元素。

寫到這 想必大家已經知道為什麼輸出結果中212沒有被刪除,因為這2貨壓根就沒有被python發現,坐上了前一個元素的位置逃過了例行檢查。元素1215為什麼也沒被刪除??因為它下標變成了前面的元素231的位置,逃過了python大哥的例行檢查。

好了,出錯的原因已經找到了,怎麼解決呢?遍歷呢就像一條路,你可以從路的起點走到終點,也可以從路的終點走到起點。剛才我們是正序遍歷,解決不了問題,那我們倒過來呢?試一下。

倒序遍歷的結構可以是這樣的: for i in range(len(s)-1,-1,-1)

程式碼及執行結果如下(這是正確的)

python列表的逆序遍歷實現

正確例項

可以看到 我們已經得到了想要輸出的結果,關於為什麼倒序不會出現問題這裡不再過多解釋 (因為我不知道怎麼解釋哈哈哈)只用記住利用for迴圈遍歷刪除元素時應該從後往前遍歷,否則會出現列表越界的情況。

除了使用remove方法外 我們還有沒有別的選擇呢?當然是有的咯 python別的不多就是函式超級多。

總結實現列表逆序遍歷方法可以有如下幾種(還有更多):

python列表的逆序遍歷實現

多種方法總結

到此這篇關於python列表的逆序遍歷實現的文章就介紹到這了,更多相關python列表的逆序遍歷內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!