python3 列表刪除大量重復元素 remove()方法


刪除列表中的元素十分簡單,有很多方法。使用最多的是remove方法,但是今天剛發現一個問題,remove在刪除列表中重復的元素時,有時會漏掉,只刪除了部分重復元素。

下面舉一個例子:

刪除num1列表中的0元素,思路就是遍歷列表,然后刪除元素。

期望輸出:nums1 = [1, 2, 3]

實際輸出:nums1 = [1, 2, 3, 0]

經過搜索后發現,出現以上問題的原因在於,列表的內存自動管理功能,在刪除列表中的元素時,python會自動對列表內存進行收縮,並移動列表中的元素以保證元素之間沒有間隙,所以使用“循環+remove()方法”來刪除列表中某一重復元素時,如果存在相鄰的該元素,在刪除前面一個元素后,后一個元素會被移動到剛被刪除的這個元素的位置,這樣這個元素就“躲過了刪除”

1 #刪除num1列表中的0          
2 nums1 = [1, 2, 3, 0, 0, 0]  
3           for j in nums1:
4                 if j == 0:
5                     nums1.remove(j)
6     

解決辦法

對於以上問題,解決思路是統計列表中重復的元素,若重復元素的個數大於0,則進行remove。

1 nums1 = [1, 2, 3, 0, 0, 0] 
2        while nums1.count(0) > 0:
3             for j in nums1:
4                 if j == 0:
5                     nums1.remove(j)

參考博客:https://blog.csdn.net/qq_39514033/article/details/80807227?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM