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

基于Python中Remove函數(shù)的用法討論

 更新時(shí)間:2020年12月11日 11:53:00   作者:代碼穿越  
這篇文章主要介紹了基于Python中Remove函數(shù)的用法討論,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

前幾天在進(jìn)行寫程序時(shí)碰到這樣一個(gè)問(wèn)題

a=['a','b','c','d']

b=['c','d','e','f']

需要將數(shù)組a中元素,在數(shù)組b中出現(xiàn)過(guò)都刪除。第一次寫出程序如下:

a=['a','b','c','d']
b=['c','d','e','f']
for x in a:
 if x in b:
 a.remove(x)
print (a)

最后的輸出結(jié)果為

出現(xiàn)這樣的結(jié)果,當(dāng)時(shí)感覺很詫異。但立馬細(xì)細(xì)一想,立馬明白了其中的原因。

當(dāng)x='c'時(shí),此時(shí)滿足if條件語(yǔ)句,執(zhí)行if下的語(yǔ)句:a.remove(x),也就是將'c'元素從a數(shù)組中刪除。

刪除之后,remove函數(shù)并沒(méi)有執(zhí)行結(jié)束。而是將a數(shù)組中索引號(hào)大于刪除元素索引號(hào)的所有元素依次前一位。

此時(shí),x指向a[2],a數(shù)組當(dāng)前的狀態(tài)為:['a','b','d'],a[2]中存儲(chǔ)的為元素'd'。

remove函數(shù)返回后,繼續(xù)執(zhí)行for循環(huán),x指向數(shù)組的下一個(gè)索引。

因此導(dǎo)致了'd'元素沒(méi)有與數(shù)組b進(jìn)行比較。

后續(xù),將程序進(jìn)行了如下修改:

a=['a','b','c','d']
c=['a','b','c','d']
b=['c','d','e','f']
 
for x in a:
 if x in b:
 c.remove(x)
print (c)

程序運(yùn)行結(jié)果如下:

雖然問(wèn)題不是很難,但是這個(gè)細(xì)節(jié)問(wèn)題一定要把握。

補(bǔ)充知識(shí):Python列表的remove方法的注意事項(xiàng)

為何沒(méi)有刪除列表中的全部元素?

解釋:

按照?qǐng)?zhí)行順序,第一個(gè)空格被刪除之后,后面的元素會(huì)前移(變成['空格','空格','12','23']),指針下一次會(huì)指向新列表的第二個(gè)元素(即初始狀態(tài)的第三個(gè)空格),從而初始狀態(tài)的第二個(gè)空格被跳過(guò)了,初始第三個(gè)空格被刪除,接著后面的元素又再次前移(變成['空格','12','23']),指針指向新列表的第三個(gè)元素,即初始狀態(tài)的第5個(gè)元素23,然后23被刪除了,因此只剩下['空格','12']

如果想排除初始列表中的部分元素,如何實(shí)現(xiàn)?

由上面的情況知道,在遍歷列表的同時(shí)對(duì)列表執(zhí)行刪除操作,會(huì)造成意外的結(jié)果,那么對(duì)初始列表進(jìn)行遍歷,對(duì)初始的列表的副本執(zhí)行刪除操作呢?

以上結(jié)果顯示,沒(méi)有得到預(yù)期效果。為什么?

問(wèn)題出在copy=ls這一句,這里僅僅是使得copy與ls指向了同一片內(nèi)存(即淺拷貝,shallow copy),并沒(méi)有執(zhí)行【開辟一片新內(nèi)存,并且ls內(nèi)存中的內(nèi)容復(fù)制到新內(nèi)存,然后使copy指向新開辟的內(nèi)存,即深拷貝,deep copy】這一系列操作。因此對(duì)copy執(zhí)行的remove操作,和對(duì)遍歷ls列表,實(shí)質(zhì)上還是都是針對(duì)同一片內(nèi)存進(jìn)行操作,因此結(jié)果上一個(gè)例子類似。

若想解決這一問(wèn)題,有3個(gè)辦法法:

(1)

ls=[' ',' ',' ','12','23','abc','aa']

copy=[' ',' ',' ','12','23','abc','aa']

這一辦法對(duì)于已知列表的所有元素,且元素?cái)?shù)量較少,結(jié)構(gòu)較簡(jiǎn)單時(shí)可行,其他情況下不可行。

(2)引入copy模塊的deepcopy方法:

Python列表的remove方法的注意事項(xiàng)

(3)另外準(zhǔn)備一個(gè)空列表,遍歷初始列表時(shí),將符合條件的元素逐一加入到空列表當(dāng)中(利用列表的append方法)。

這種方法,思路上與remove方法相反,但執(zhí)行的操作差不多,時(shí)間復(fù)雜度也與remove方法差不多,無(wú)需引入copy模塊。

另外,對(duì)于列表的remove方法,python基礎(chǔ)教程第二版給出的說(shuō)明是:

remove方法用于移除列表中某個(gè)值的第一個(gè)匹配項(xiàng):

>>>x=['to','be','or','not','to','be']
>>>x.remove('be')
>>>x
['to','or','not','to','be']

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方歡迎留言討論,望不吝賜教。

相關(guān)文章

  • python實(shí)現(xiàn)mysql的讀寫分離及負(fù)載均衡

    python實(shí)現(xiàn)mysql的讀寫分離及負(fù)載均衡

    這篇文章主要介紹了python實(shí)現(xiàn)mysql的讀寫分離及負(fù)載均衡 ,需要的朋友可以參考下
    2018-02-02
  • Python變量命名規(guī)范的總結(jié)

    Python變量命名規(guī)范的總結(jié)

    在Python編程中,變量命名規(guī)范對(duì)于編寫優(yōu)雅和可維護(hù)的代碼至關(guān)重要,本文主要介紹了Python變量命名規(guī)范的總結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • python Web flask 視圖內(nèi)容和模板實(shí)現(xiàn)代碼

    python Web flask 視圖內(nèi)容和模板實(shí)現(xiàn)代碼

    這篇文章主要介紹了python Web flask 視圖內(nèi)容和模板實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python入門教程(二十九)Python的RegEx正則表達(dá)式

    Python入門教程(二十九)Python的RegEx正則表達(dá)式

    這篇文章主要介紹了Python入門教程(二十九)Python的RegEx,RegEx 或正則表達(dá)式是形成搜索模式的字符序列。RegEx 可用于檢查字符串是否包含指定的搜索模式,需要的朋友可以參考下
    2023-04-04
  • 如何使用?Python?Timedelta?月份計(jì)算日期

    如何使用?Python?Timedelta?月份計(jì)算日期

    在本篇文章中,我們將通過(guò)?timedelta?學(xué)習(xí)如何在?Python?中使用日期時(shí)間,?我們將了解如何計(jì)算當(dāng)前日期或任何其他日期六個(gè)月后的日期,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • Python使用json模塊讀取和寫入JSON數(shù)據(jù)

    Python使用json模塊讀取和寫入JSON數(shù)據(jù)

    Python 提供了內(nèi)置的 json 模塊,使得我們可以方便地解析 JSON 數(shù)據(jù)(讀取)和生成 JSON 數(shù)據(jù)(寫入),下面小編就來(lái)為大家介紹一下具體的操作步驟吧
    2025-03-03
  • python3基于OpenCV實(shí)現(xiàn)證件照背景替換

    python3基于OpenCV實(shí)現(xiàn)證件照背景替換

    這篇文章主要為大家詳細(xì)介紹了python3基于OpenCV實(shí)現(xiàn)證件照背景替換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Python繪制心形曲線完整代碼實(shí)現(xiàn)

    Python繪制心形曲線完整代碼實(shí)現(xiàn)

    這篇文章主要介紹了Python繪制心形曲線的相關(guān)資料,通過(guò)numpy和matplotlib庫(kù)計(jì)算坐標(biāo)并繪圖,代碼包含導(dǎo)入庫(kù)、定義函數(shù)、生成參數(shù)、計(jì)算坐標(biāo)、繪圖和顯示圖形等步驟,展示了數(shù)學(xué)與編程的結(jié)合美感,需要的朋友可以參考下
    2024-10-10
  • 如何在windows下安裝Pycham2020軟件(方法步驟詳解)

    如何在windows下安裝Pycham2020軟件(方法步驟詳解)

    這篇文章主要介紹了在windows下安裝Pycham2020軟件方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python如何使用ConfigParser讀取配置文件

    Python如何使用ConfigParser讀取配置文件

    這篇文章主要介紹了Python如何使用ConfigParser讀取配置文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論

武威市| 海南省| 红安县| 元阳县| 当雄县| 宁远县| 新建县| 南郑县| 尼勒克县| 锦屏县| 清苑县| 玉山县| 丰台区| 甘洛县| 红河县| 那曲县| 白朗县| 盐津县| 武鸣县| 汉川市| 巫山县| 孟津县| 砀山县| 宣武区| 梅州市| 鄂州市| 通河县| 元谋县| 泉州市| 通化县| 望谟县| 桦南县| 比如县| 柘荣县| 巴中市| 宁化县| 盐池县| 宝丰县| 噶尔县| 武邑县| 湘潭市|