最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python遍歷列表時刪除元素案例

 更新時間:2022年09月06日 10:41:03   作者:程序員老華  
這篇文章主要介紹了Python遍歷列表時刪除元素案例,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下

tk在科學(xué)養(yǎng)豬群里問bluerust、scz是否碰上過這個Python坑,

示例1:

bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5' ]
for ba in bas :
    print( ba )
    if ( ba.find( 'ba' ) != -1 ) :
        bas.remove( ba )
        print( bas )

print( bas )

即遍歷list的過程中動態(tài)刪除元素。

上述代碼輸出如下:

ba1
['ba2', 'ba3', 'ba4', 'ba5']
ba3                             // ba2被跳過去了
['ba2', 'ba4', 'ba5']
ba5                             // ba4被跳過去了
['ba2', 'ba4']
['ba2', 'ba4']                  // 列表未刪干凈

對示例1做點改動,

示例2:

bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5' ]
for i in range( len( bas ) ) :
    print( i )
    print( bas[i] )
    if ( bas[i].find( 'ba' ) != -1 ) :
        del bas[i]
        print( bas )

print( bas )

上述代碼輸出如下:

0
ba1
['ba2', 'ba3', 'ba4', 'ba5']
1
ba3
['ba2', 'ba4', 'ba5']
2
ba5
['ba2', 'ba4']
3
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
IndexError: list index out of range
['ba2', 'ba4']

循環(huán)變量i只遞增到3,進而拋出IndexError。

該坑的起因是,for循環(huán)中i的取值從最開始就固定了,實際上要求list在for循環(huán)中保持不變;遍歷list的過程中動態(tài)刪除元素,導(dǎo)致list發(fā)生變化,而i仍固執(zhí)地按原計劃遞增遍歷list,于是漏刪元素、索引越界。

對此,wzhvictor給了5種解決方案。

方式1,利用filter函數(shù)

bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5', 'tk' ]
bas = list( filter( lambda ba:ba.find( 'ba' ) == -1, bas ) )
print( bas )

方法2,重新構(gòu)造list

bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5', 'tk' ]
bas = [ba for ba in bas if ba.find( 'ba' ) == -1]
print( bas )

方法3,遍歷list的拷貝,對原始list進行刪除操作

bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5', 'tk' ]
for ba in bas[:] :
    if ( ba.find( 'ba' ) != -1 ) :
        bas.remove( ba )

print( bas )

方法4

bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5', 'tk' ]
for ba in bas[:] :
    if ( ba.find( 'ba' ) != -1 ) :
        bas.remove( ba )

print( bas )

方法5,倒序遍歷

bas = [ 'ba1', 'ba2', 'ba3', 'ba4', 'ba5', 'tk' ]
for i in range( len( bas )-1, -1, -1 ) :
    if ( bas[i].find( 'ba' ) != -1 ) :
        del bas[i]

print( bas )

就tk的示例1而言,方法4其實不適用,方法4適合從list中刪除所有特定值。

這個坑我沒踩過,用過方法2、3、4或者它們的變種。沒像wzhvictor那樣細(xì)究過for循環(huán)中i取值從最開始就固定,但我本能地對循環(huán)中動態(tài)處理的對象不放心,又懶得看Python文檔,所以要么重新構(gòu)造list,要么復(fù)制list再操作,完美避坑。今日看了wzhvictor的文章,方法1沒用過,方法5沒想過,方法5比較騷包,我第一次見。

Python表面上的不確定性真多,也沒啥大不了,我的經(jīng)驗是,能用簡明直觀確定性的寫法,就不要騷包玩花活,性能優(yōu)化是后話。再就是,單元測試,無需再多強調(diào)。

到此這篇關(guān)于Python遍歷列表時刪除元素案例的文章就介紹到這了,更多相關(guān)Python遍歷列表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Python實現(xiàn)批量裁剪圖片

    利用Python實現(xiàn)批量裁剪圖片

    這篇文章主要為大家詳細(xì)介紹了如何基于Python如何批量裁剪圖片并保存,文中的示例代碼講解詳細(xì),具有一定的參考價值,有需要的小伙伴可以了解一下
    2023-10-10
  • 淺談Python的Django框架中的緩存控制

    淺談Python的Django框架中的緩存控制

    這篇文章主要介紹了Python的Django框架中的緩存控制,包括Vary頭部以外的其他頭部使用等,需要的朋友可以參考下
    2015-07-07
  • python之json文件轉(zhuǎn)xml文件案例講解

    python之json文件轉(zhuǎn)xml文件案例講解

    這篇文章主要介紹了python之json文件轉(zhuǎn)xml文件案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Python的CGIHTTPServer交互實現(xiàn)詳解

    Python的CGIHTTPServer交互實現(xiàn)詳解

    本篇文章主要給大家詳細(xì)分析了Python的CGIHTTPServer交互實現(xiàn)過程以及相關(guān)代碼分享,有興趣的參考學(xué)習(xí)下。
    2018-02-02
  • tkinter如何實現(xiàn)打開文件對話框并獲取文件絕對路徑

    tkinter如何實現(xiàn)打開文件對話框并獲取文件絕對路徑

    這篇文章主要介紹了tkinter實現(xiàn)打開文件對話框并獲取文件絕對路徑問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • python使用wxpy實現(xiàn)微信消息防撤回腳本

    python使用wxpy實現(xiàn)微信消息防撤回腳本

    這篇文章主要為大家詳細(xì)介紹了python使用wxpy實現(xiàn)微信消息防撤回腳本,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • python 調(diào)用Google翻譯接口的方法

    python 調(diào)用Google翻譯接口的方法

    這篇文章主要介紹了python 調(diào)用Google翻譯接口的方法,幫助大家更好的理解和使用python處理url,感興趣的朋友可以了解下
    2020-12-12
  • Python連接mysql方法及常用參數(shù)

    Python連接mysql方法及常用參數(shù)

    這篇文章主要介紹了Python連接mysql方法及常用參數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • python圖的深度優(yōu)先和廣度優(yōu)先算法實例分析

    python圖的深度優(yōu)先和廣度優(yōu)先算法實例分析

    這篇文章主要介紹了python圖的深度優(yōu)先和廣度優(yōu)先算法,結(jié)合實例形式分析了圖的深度優(yōu)先算法與廣度優(yōu)先算法相關(guān)概念、原理、實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下
    2019-10-10
  • Scrapy模擬登錄趕集網(wǎng)的實現(xiàn)代碼

    Scrapy模擬登錄趕集網(wǎng)的實現(xiàn)代碼

    這篇文章主要介紹了Scrapy模擬登錄趕集網(wǎng)的實現(xiàn)代碼,本文通過代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07

最新評論

井研县| 图们市| 合水县| 常州市| 甘洛县| 布尔津县| 大洼县| 石泉县| 磐安县| 阳新县| 朝阳市| 无锡市| 阿坝县| 汝阳县| 吉首市| 安福县| 河池市| 包头市| 潮安县| 三亚市| 塘沽区| 西畴县| 秦安县| 泰来县| 西吉县| 樟树市| 桐庐县| 鹤岗市| 隆德县| 抚顺县| 泸西县| 西吉县| 巴林右旗| 贺兰县| 清水河县| 镇雄县| 长治县| 阿克苏市| 读书| 开封县| 华坪县|