python3列表刪除大量重復元素remove()方法的問題詳解

前言

刪除列表中的元素十分簡單,有很多方法。使用最多的是remove方法,remove() 方法從集合中刪除指定的元素。此方法與discard()方法不同,因為如果指定的項目不存在,remove() 方法將引發錯誤,而discard()方法不會。但是今天剛發現一個問題,remove在刪除列表中重復的元素時,有時會漏掉,隻刪除瞭部分重復元素。

下面舉一個例子:

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

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

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

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

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

解決辦法:

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

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

參考文章:https://www.jb51.net/article/203398.htm

總結

到此這篇關於python3列表刪除大量重復元素remove()方法的文章就介紹到這瞭,更多相關python3列表刪除大量重復元素內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: