python列表的逆序遍歷實(shí)現(xiàn)
引題:該題源自一個(gè)網(wǎng)友的求助,作為水群龍王的我義不容辭的接下了這道題目,先來看題目:

拿到這道題,題目的意思已經(jīng)很清楚了,列表里含有2的元素都需要?jiǎng)h除,然后輸出刪除后的新列表。我首先想到的思路就是使用for循環(huán)遍歷字符串,利用字符串操作符x in s(如果x是s的子串,返回True,否則返回False),使用if函數(shù) ,若為True則刪除(remove)該元素。最終輸出新列表。
思路代碼及運(yùn)行結(jié)果如下(這是錯(cuò)的)

錯(cuò)誤實(shí)例
觀察輸出結(jié)果,跟原列表相比雖然剔除了一些含2的元素,但是并沒有完全剔除,為什么?
來分析一下python是根據(jù)列表元素的下標(biāo)來遍歷的。于是最開始元素123下標(biāo)為1, 元素212下標(biāo)為2。第一遍循環(huán)執(zhí)行了s.remove,刪除了元素123。當(dāng)進(jìn)入第二遍循環(huán)時(shí)?。?!重點(diǎn)來了,注意 此時(shí)元素123已經(jīng)是被刪除了, 所以元素212的下標(biāo)由1變成了0,元素434下標(biāo)由2變成了1。而下標(biāo)為0已經(jīng)在第一遍循環(huán)中執(zhí)行了,故第二遍循環(huán)會(huì)尋找下標(biāo)為1的元素。
寫到這 想必大家已經(jīng)知道為什么輸出結(jié)果中212沒有被刪除,因?yàn)檫@2貨壓根就沒有被python發(fā)現(xiàn),坐上了前一個(gè)元素的位置逃過了例行檢查。元素1215為什么也沒被刪除??因?yàn)樗聵?biāo)變成了前面的元素231的位置,逃過了python大哥的例行檢查。
好了,出錯(cuò)的原因已經(jīng)找到了,怎么解決呢?遍歷呢就像一條路,你可以從路的起點(diǎn)走到終點(diǎn),也可以從路的終點(diǎn)走到起點(diǎn)。剛才我們是正序遍歷,解決不了問題,那我們倒過來呢?試一下。
倒序遍歷的結(jié)構(gòu)可以是這樣的: for i in range(len(s)-1,-1,-1)
代碼及運(yùn)行結(jié)果如下(這是正確的)

正確實(shí)例
可以看到 我們已經(jīng)得到了想要輸出的結(jié)果,關(guān)于為什么倒序不會(huì)出現(xiàn)問題這里不再過多解釋 (因?yàn)槲也恢涝趺唇忉尮┲挥糜涀±胒or循環(huán)遍歷刪除元素時(shí)應(yīng)該從后往前遍歷,否則會(huì)出現(xiàn)列表越界的情況。
除了使用remove方法外 我們還有沒有別的選擇呢?當(dāng)然是有的咯 python別的不多就是函數(shù)超級(jí)多。
總結(jié)實(shí)現(xiàn)列表逆序遍歷方法可以有如下幾種(還有更多):

多種方法總結(jié)
到此這篇關(guān)于python列表的逆序遍歷實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python列表的逆序遍歷內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python如何將視頻按照一定時(shí)間切割(比如:每10s進(jìn)行裁切)
這篇文章主要介紹了使用Python將視頻按照一定時(shí)間切割(比如:每10s進(jìn)行裁切),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
Python3 適合初學(xué)者學(xué)習(xí)的銀行賬戶登錄系統(tǒng)實(shí)例
下面小編就為大家?guī)硪黄狿ython3 適合初學(xué)者學(xué)習(xí)的銀行賬戶登錄系統(tǒng)實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08
Python實(shí)現(xiàn)實(shí)時(shí)跟隨微信窗口移動(dòng)的GUI界面
Python寫一些簡(jiǎn)單的GUI界面也是非常簡(jiǎn)單的,并且Python有著豐富的庫,這些庫可以很方便我們?nèi)ゲ僮鱓indows系統(tǒng)。本文就來用Python編寫一個(gè)實(shí)時(shí)跟隨微信窗口移動(dòng)的GUI界面吧2023-04-04
python實(shí)現(xiàn)斐波那契數(shù)列的方法示例
每個(gè)碼農(nóng)大概都會(huì)用自己擅長(zhǎng)的語言寫出一個(gè)斐波那契數(shù)列出來,斐波那契數(shù)列簡(jiǎn)單地說,起始兩項(xiàng)為0和1,此后的項(xiàng)分別為它的前兩項(xiàng)之后。下面這篇文章就給大家詳細(xì)介紹了python實(shí)現(xiàn)斐波那契數(shù)列的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。2017-01-01
Python實(shí)現(xiàn)端口流量轉(zhuǎn)發(fā)的示例代碼
端口流量轉(zhuǎn)發(fā)(Port Forwarding)是一種網(wǎng)絡(luò)通信技術(shù),用于將特定的網(wǎng)絡(luò)流量從一個(gè)端口或網(wǎng)絡(luò)地址轉(zhuǎn)發(fā)到另一個(gè)端口或地址,它在網(wǎng)絡(luò)中扮演著一個(gè)非常重要的角色,在Python語言中實(shí)現(xiàn)端口轉(zhuǎn)發(fā)非常容易,文中有相關(guān)的代碼示例,需要的朋友可以參考下2023-11-11

