python3列表刪除大量重復(fù)元素remove()方法的問(wèn)題詳解
前言
刪除列表中的元素十分簡(jiǎn)單,有很多方法。使用最多的是remove方法,remove() 方法從集合中刪除指定的元素。此方法與discard()方法不同,因?yàn)槿绻付ǖ捻?xiàng)目不存在,remove() 方法將引發(fā)錯(cuò)誤,而discard()方法不會(huì)。但是今天剛發(fā)現(xiàn)一個(gè)問(wèn)題,remove在刪除列表中重復(fù)的元素時(shí),有時(shí)會(huì)漏掉,只刪除了部分重復(fù)元素。
下面舉一個(gè)例子:
刪除num1列表中的0元素,思路就是遍歷列表,然后刪除元素。
期望輸出:nums1 = [1, 2, 3]
實(shí)際輸出:nums1 = [1, 2, 3, 0]
經(jīng)過(guò)搜索后發(fā)現(xiàn),出現(xiàn)以上問(wèn)題的原因在于,列表的內(nèi)存自動(dòng)管理功能,在刪除列表中的元素時(shí),python會(huì)自動(dòng)對(duì)列表內(nèi)存進(jìn)行收縮,并移動(dòng)列表中的元素以保證元素之間沒(méi)有間隙,所以使用“循環(huán)+remove()方法”來(lái)刪除列表中某一重復(fù)元素時(shí),如果存在相鄰的該元素,在刪除前面一個(gè)元素后,后一個(gè)元素會(huì)被移動(dòng)到剛被刪除的這個(gè)元素的位置,這樣這個(gè)元素就“躲過(guò)了刪除”
#刪除num1列表中的0 nums1 = [1, 2, 3, 0, 0, 0] for j in nums1: if j == 0: nums1.remove(j)
解決辦法:
對(duì)于以上問(wèn)題,解決思路是統(tǒng)計(jì)列表中重復(fù)的元素,若重復(fù)元素的個(gè)數(shù)大于0,則進(jìn)行remove。
nums1 = [1, 2, 3, 0, 0, 0] while nums1.count(0) > 0: for j in nums1: if j == 0: nums1.remove(j)
參考文章:http://www.dbjr.com.cn/article/203398.htm
總結(jié)
到此這篇關(guān)于python3列表刪除大量重復(fù)元素remove()方法的文章就介紹到這了,更多相關(guān)python3列表刪除大量重復(fù)元素內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python實(shí)現(xiàn)刪除list列表重復(fù)元素的方法總結(jié)
- Python刪除列表中重復(fù)元素的七種方法舉例
- Python列表刪除重復(fù)元素與圖像相似度判斷及刪除實(shí)例代碼
- Python代碼實(shí)現(xiàn)刪除一個(gè)list里面重復(fù)元素的方法
- Python list列表中刪除多個(gè)重復(fù)元素操作示例
- Python實(shí)現(xiàn)連接兩個(gè)無(wú)規(guī)則列表后刪除重復(fù)元素并升序排序的方法
- Python實(shí)現(xiàn)列表刪除重復(fù)元素的三種常用方法分析
- python列表中刪除重復(fù)元素的三種方法
相關(guān)文章
python使用socket向客戶端發(fā)送數(shù)據(jù)的方法
這篇文章主要介紹了python使用socket向客戶端發(fā)送數(shù)據(jù)的方法,涉及Python使用socket實(shí)現(xiàn)數(shù)據(jù)通信的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04python實(shí)現(xiàn)打開手機(jī)app并點(diǎn)擊操作
這篇文章主要介紹了python實(shí)現(xiàn)打開手機(jī)app并點(diǎn)擊操作,本文分為兩部分一部分是打開應(yīng)用,第二部分是調(diào)式手機(jī)連接電腦,需要的朋友可以參考下2022-04-04python argparse命令行參數(shù)解析(推薦)
Python argparse模塊是解析命令行參數(shù)的首選方法。解析命令行參數(shù)是一個(gè)非常常見(jiàn)的任務(wù),Python腳本根據(jù)傳遞的值來(lái)執(zhí)行和操作2021-06-06numpy刪除單行、刪除單列、刪除多列實(shí)現(xiàn)方式
這篇文章主要介紹了numpy刪除單行、刪除單列、刪除多列實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02Python散列表(Hash Table)的實(shí)現(xiàn)示例
散列表是一種常用于實(shí)現(xiàn)關(guān)聯(lián)數(shù)組或映射的數(shù)據(jù)結(jié)構(gòu),本文我們將深入講解Python中的散列表,包括散列函數(shù)、沖突解決方法、散列表的實(shí)現(xiàn)和應(yīng)用場(chǎng)景,感興趣的可以了解一下2024-01-01Python光學(xué)仿真wxpython透鏡演示系統(tǒng)框架
這篇文章主要為大家介紹了Python光學(xué)仿真UI界面的wxpython透鏡演示系統(tǒng)框架基本講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-10-10