亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python遍歷列表時(shí)刪除元素案例

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

tk在科學(xué)養(yǎng)豬群里問bluerust、scz是否碰上過這個(gè)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的過程中動(dòng)態(tài)刪除元素。

上述代碼輸出如下:

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

對(duì)示例1做點(diǎn)改動(dòng),

示例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,進(jìn)而拋出IndexError。

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

對(duì)此,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的拷貝,對(duì)原始list進(jìn)行刪除操作

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其實(shí)不適用,方法4適合從list中刪除所有特定值。

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

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

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

相關(guān)文章

  • 在PyTorch中Tensor的查找和篩選例子

    在PyTorch中Tensor的查找和篩選例子

    今天小編就為大家分享一篇在PyTorch中Tensor的查找和篩選例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 教你如何利用python3爬蟲爬取漫畫島-非人哉漫畫

    教你如何利用python3爬蟲爬取漫畫島-非人哉漫畫

    本文給大家分享利用python3爬蟲爬取漫畫島-非人哉漫畫,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友跟隨小編一起學(xué)習(xí)下吧
    2021-07-07
  • 淺談Python 敏感詞過濾的實(shí)現(xiàn)

    淺談Python 敏感詞過濾的實(shí)現(xiàn)

    這篇文章主要介紹了淺談Python 敏感詞過濾的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • pandas中的.assign()方法的用法示例小結(jié)

    pandas中的.assign()方法的用法示例小結(jié)

    pandas中的.assign()方法用于創(chuàng)建一個(gè)新的DataFrame,其中包含現(xiàn)有DataFrame的副本,并附加了指定的新列或更新了現(xiàn)有列,.assign()方法還可以鏈?zhǔn)绞褂?以添加多個(gè)新列或更新現(xiàn)有列,對(duì)pandas中的.assign()方法感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • Python求兩個(gè)文本文件以行為單位的交集、并集與差集的方法

    Python求兩個(gè)文本文件以行為單位的交集、并集與差集的方法

    這篇文章主要介紹了Python求兩個(gè)文本文件以行為單位的交集、并集與差集的方法,涉及Python文本文件與集合運(yùn)算的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • Python使用qrcode二維碼庫生成二維碼方法詳解

    Python使用qrcode二維碼庫生成二維碼方法詳解

    這篇文章主要介紹了Python使用qrcode二維碼庫生成二維碼方法詳解,需要的朋友可以參考下
    2020-02-02
  • 簡單談?wù)凱ython中的反轉(zhuǎn)字符串問題

    簡單談?wù)凱ython中的反轉(zhuǎn)字符串問題

    本文給大家總結(jié)了5種可以實(shí)現(xiàn)python中反轉(zhuǎn)字符串的方法,非常的實(shí)用,有需要的小伙伴可以參考下
    2016-10-10
  • python光學(xué)仿真PyQt5基礎(chǔ)框架教程

    python光學(xué)仿真PyQt5基礎(chǔ)框架教程

    這篇文章主要為大家介紹了python光學(xué)仿真之PyQt5基礎(chǔ)框架教程,文中含有詳細(xì)實(shí)現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • TensorFlow keras卷積神經(jīng)網(wǎng)絡(luò) 添加L2正則化方式

    TensorFlow keras卷積神經(jīng)網(wǎng)絡(luò) 添加L2正則化方式

    這篇文章主要介紹了TensorFlow keras卷積神經(jīng)網(wǎng)絡(luò) 添加L2正則化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python解析多層json操作示例

    python解析多層json操作示例

    這篇文章主要介紹了python解析多層json操作,結(jié)合實(shí)例形式分析了Python針對(duì)多層json文件的讀取、解析、修改、保存等相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12

最新評(píng)論