python列表反向取值_Python列表的反向遍历,python,逆序
引題:該題源自一個網友的求助,作為水群龍王的我義不容辭的接下了這道題目,先來看題目:
題目
拿到這道題,題目的意思已經很清楚了,列表里含有2的元素都需要刪除,然后輸出刪除后的新列表。我首先想到的思路就是使用for循環遍歷字符串,利用字符串操作符x in s(如果x是s的子串,返回True,否則返回False),使用if函數 ,若為True則刪除(remove)該元素。最終輸出新列表。
思路代碼及運行結果如下(這是錯的)
錯誤實例
觀察輸出結果,跟原列表相比雖然剔除了一些含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)
代碼及運行結果如下(這是正確的)
正確實例
可以看到 我們已經得到了想要輸出的結果,關于為什么倒序不會出現問題這里不再過多解釋 (因為我不知道怎么解釋哈哈哈)只用記住利用for循環遍歷刪除元素時應該從后往前遍歷,否則會出現列表越界的情況。
除了使用remove方法外 我們還有沒有別的選擇呢?當然是有的咯 python別的不多就是函數超級多。
總結實現列表逆序遍歷方法可以有如下幾種(還有更多):
多種方法總結
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的python列表反向取值_Python列表的反向遍历,python,逆序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对于局部变量_2020年对于JDK ,大
- 下一篇: python 按键精灵 离线_pytho