python3列表刪除大量重復元素remove()方法的問題詳解
前言
刪除列表中的元素十分簡單,有很多方法。使用最多的是remove方法,remove() 方法從集合中刪除指定的元素。此方法與discard()方法不同,因為如果指定的項目不存在,remove() 方法將引發(fā)錯誤,而discard()方法不會。但是今天剛發(fā)現一個問題,remove在刪除列表中重復的元素時,有時會漏掉,只刪除了部分重復元素。
下面舉一個例子:
刪除num1列表中的0元素,思路就是遍歷列表,然后刪除元素。
期望輸出:nums1 = [1, 2, 3]
實際輸出:nums1 = [1, 2, 3, 0]
經過搜索后發(fā)現,出現以上問題的原因在于,列表的內存自動管理功能,在刪除列表中的元素時,python會自動對列表內存進行收縮,并移動列表中的元素以保證元素之間沒有間隙,所以使用“循環(huán)+remove()方法”來刪除列表中某一重復元素時,如果存在相鄰的該元素,在刪除前面一個元素后,后一個元素會被移動到剛被刪除的這個元素的位置,這樣這個元素就“躲過了刪除”
#刪除num1列表中的0 nums1 = [1, 2, 3, 0, 0, 0] for j in nums1: if j == 0: nums1.remove(j)
解決辦法:
對于以上問題,解決思路是統(tǒng)計列表中重復的元素,若重復元素的個數大于0,則進行remove。
nums1 = [1, 2, 3, 0, 0, 0] while nums1.count(0) > 0: for j in nums1: if j == 0: nums1.remove(j)
參考文章:http://m.fzitv.net/article/203398.htm
總結
到此這篇關于python3列表刪除大量重復元素remove()方法的文章就介紹到這了,更多相關python3列表刪除大量重復元素內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python利用Charles 實現全部自動答題思路流程分析
這篇文章主要介紹了Python利用Charles 實現全部自動答題思路流程分析,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
Python操作word常見方法示例【win32com與docx模塊】
這篇文章主要介紹了Python操作word常見方法,結合實例形式分析了Python使用win32com模塊與docx模塊操作word的相關實現技巧及相關注意事項,需要的朋友可以參考下2018-07-07

