如何在 Python 中查詢列表中的重複資料

  1. 使用 set() 函式刪除 Python 列表中的重複內容
  2. 使用 iteration_utils 模組來查詢 Python 列表中的重複項
如何在 Python 中查詢列表中的重複資料

本教程將介紹如何在 Python 中查詢列表中的重複內容。

使用 set() 函式刪除 Python 列表中的重複內容

Python set() 是一個將列表轉換為集合的函式。根據對集合和列表的描述,將一個列表轉換為集合意味著刪除列表中所有重複的元素。

然而,我們想要的是搜尋列表中重複項。要做到這一點,我們仍然使用 set() 函式,但我們只包括那些在列表中擁有多個元素的元素,這意味著它們是有重複的元素。

  • 宣告一個函式,在一個列表中尋找重複的元素,並將它們儲存為一個集合。
def listToSet(listNums):
	set([num for num in listNums if listNums.count(x) > 1])
  • 另一種方法,如果你想把結果保留為一個列表而不是一個集合,則使用 set()add() 在列表中尋找重複的元素,並在返回時重新將其轉換為一個列表。
def list_duplicates(listNums):
  once = set()
  seenOnce = once.add
  twice = set( num for num in listNums if num in once or seenOnce(x) )
  return list( twice )

如果這個數字是第一次出現,並且在集合 once 內不存在,那麼這個函式就會把元素新增到 once 中。

兩個函式將返回相同的輸出,儘管一個是集合,另一個是列表。結果將輸出 listNums 中所有重複的元素。

[1,3,5,8]

使用 iteration_utils 模組來查詢 Python 列表中的重複項

iteration_utils 有兩個函式可以在預定義函式中搜尋重複的內容:duplicatesunique_everseen

我們將使用上面相同的列表定義 listNums

iteration_utils 中匯入 duplicates,並使用它來返回 listNums 內所有重複的列表。

from iteration_utils import duplicates

listNums = [1,1,2,3,3,4,5,5,5,5,6,8,8]

def listDups(listNums):
  return list(duplicates(listNums))

上述函式的輸出將返回一個包含 listNums 內所有重複元素的列表。

[1,1,3,3,5,5,5,5,8,8]

雖然,這個列表還包括重複元素的迭代。這意味著它將返回重複元素的每個例項。

這就是 unique_everseen 的作用。這個函式對列表進行處理,刪除 duplicates() 返回的所有重複的例項。

from iteration_utils import duplicates
from iteration_utils import unique_everseen

listNums = [1,1,2,3,3,4,5,5,5,5,6,8,8]
def listDupsUnique(listNums):
	return list(unique_everseen(duplicates(listNums)))

然後這個函式將返回以下結果。

[1,3,5,8]

總而言之,在 Python 中,有兩種簡單的解決方案來查詢列表中的重複例項。第一種是使用 set() 和其他 Python 中集合的實用函式來查詢重複的內容,並將它們儲存在另一個變數中。另一種是通過 iteration_utils 模組,使用 duplicatesunique_everseen,這或多或少地做了同樣的事情,產生了同樣的輸出。

相關文章 - Python List

  • 在 Python 中將字典轉換為列表
  • 從 Python 列表中刪除某元素的所有出現
  • 在 Python 中從列表中刪除重複項
  • 如何在 Python 中獲取一個列表的平均值
  • Python 列表方法 append 和 extend 之間有什麼區別
  • 如何在 Python 中將列表轉換為字串