国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

基于Python中Remove函數的用法討論

瀏覽:103日期:2022-07-02 13:59:24

前幾天在進行寫程序時碰到這樣一個問題

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

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

需要將數組a中元素,在數組b中出現過都刪除。第一次寫出程序如下:

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

最后的輸出結果為

基于Python中Remove函數的用法討論

出現這樣的結果,當時感覺很詫異。但立馬細細一想,立馬明白了其中的原因。

當x=’c’時,此時滿足if條件語句,執行if下的語句:a.remove(x),也就是將’c’元素從a數組中刪除。

刪除之后,remove函數并沒有執行結束。而是將a數組中索引號大于刪除元素索引號的所有元素依次前一位。

此時,x指向a[2],a數組當前的狀態為:[’a’,’b’,’d’],a[2]中存儲的為元素’d’。

remove函數返回后,繼續執行for循環,x指向數組的下一個索引。

因此導致了’d’元素沒有與數組b進行比較。

后續,將程序進行了如下修改:

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)

程序運行結果如下:

基于Python中Remove函數的用法討論

雖然問題不是很難,但是這個細節問題一定要把握。

補充知識:Python列表的remove方法的注意事項

基于Python中Remove函數的用法討論

為何沒有刪除列表中的全部元素?

解釋:

按照執行順序,第一個空格被刪除之后,后面的元素會前移(變成[’空格’,’空格’,’12’,’23’]),指針下一次會指向新列表的第二個元素(即初始狀態的第三個空格),從而初始狀態的第二個空格被跳過了,初始第三個空格被刪除,接著后面的元素又再次前移(變成[’空格’,’12’,’23’]),指針指向新列表的第三個元素,即初始狀態的第5個元素23,然后23被刪除了,因此只剩下[’空格’,’12’]

如果想排除初始列表中的部分元素,如何實現?

由上面的情況知道,在遍歷列表的同時對列表執行刪除操作,會造成意外的結果,那么對初始列表進行遍歷,對初始的列表的副本執行刪除操作呢?

基于Python中Remove函數的用法討論

以上結果顯示,沒有得到預期效果。為什么?

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

若想解決這一問題,有3個辦法法:

(1)

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

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

這一辦法對于已知列表的所有元素,且元素數量較少,結構較簡單時可行,其他情況下不可行。

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

基于Python中Remove函數的用法討論

Python列表的remove方法的注意事項

(3)另外準備一個空列表,遍歷初始列表時,將符合條件的元素逐一加入到空列表當中(利用列表的append方法)。

這種方法,思路上與remove方法相反,但執行的操作差不多,時間復雜度也與remove方法差不多,無需引入copy模塊。

另外,對于列表的remove方法,python基礎教程第二版給出的說明是:

remove方法用于移除列表中某個值的第一個匹配項:

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方歡迎留言討論,望不吝賜教。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 欧美三级一级片 | 久久精品国产6699国产精 | 亚洲精品久久久久久久无 | 91久久国产综合精品女同国语 | jul-179在线中文字幕 | 亚洲国产大片 | 波多野结衣一区二区三区88 | 欧美成人激情 | 真人毛片免费全部播放完整 | 可以免费看黄的网址 | 欧美成人精品动漫在线专区 | 成人亚洲欧美日韩在线 | a欧美在线 | 日韩欧一级毛片在线播无遮挡 | 91成人免费观看 | 能在线观看的一区二区三区 | 午夜宅男在线永久免费观看网 | 美国全免费特一级毛片 | 国产精品成人久久久久 | 国产精品影视 | 一本久道久久综合婷婷五 | 久久久久久国产精品免费 | 农村寡妇一级毛片免费播放 | 国产毛片网站 | 国产一级做a爰片... | 最新理论三级中文在线观看 | 欧美视频一区二区在线观看 | 国产乱子伦视频大全 | 国产精品久久久久久久久岛 | 亚洲国产精品成人精品软件 | a级毛片网站 | a级毛片毛片免费观看久潮喷 | 在线免费视频 | 国产香蕉在线视频一级毛片 | 国产思思 | 99在线视频精品 | 欧美性色生活片天天看99 | 免费欧美在线视频 | 免费看a级毛片 | 亚洲国产一区在线精选 | 婷婷91|