Python - 列表的多眾數


在給定的問題中,我們需要使用 Python 顯示在給定列表中出現頻率最高的元素。基本上,此操作在 Python 中被稱為列表的多眾數。

理解問題的邏輯

手頭的問題是建立一個程式,該程式將執行查詢給定列表的多眾數的操作。因此,在列表中使用多眾數一詞來指代在輸入列表中最常出現的專案集。或者我們可以說列表中專案的最高頻率或計數。

為了找到給定列表的多眾數,我們將確定給定列表中每個專案的頻率計數。並顯示計數或頻率最高的專案。為了解決這個問題,我們將使用兩種方法。首先,我們將使用 Python 的 statistics 模組,在第二種方法中,我們將使用基本的 Python 功能。

演算法 - 使用 Statistics

  • 步驟 1 - 首先,我們將匯入 statistics 模組,其中我們將擁有 multimode 函式來返回列表中最頻繁的專案。

  • 步驟 2 - 因此,定義多眾數並在該函式內部,我們將傳遞一個列表引數,我們需要為此找出多眾數。

  • 步驟 3 - 定義並初始化列表為 the_list。並呼叫函式以顯示輸出。

示例 - 使用 Statistics

import statistics #import the module

# module usage 
def multimode(lst):
   return statistics.multimode(lst)

# usage
the_list = [9, 8, 8, 7, 7, 7, 6, 6, 6, 6]
Output = multimode(the_list)
print(Output)

輸出

[6]

演算法 - 另一種方法

  • 步驟 1 - 首先,我們將建立一個名為 most_frequent 的字典,用於儲存列表中專案的頻率計數。

  • 步驟 2 - 然後我們將迭代列表中的數字。

  • 步驟 3 - 並檢查每個數字。如果該數字已存在於 most_frequent 字典中。如果條件為真,則使用 get 方法將計數增加 1,並將計數儲存在字典中。

  • 步驟 4 - 如果條件為假,則表示該元素不存在於 most_frequent 字典中,則將其新增到 most_frequent 字典中,初始計數為 1。

  • 步驟 5 - 由於必須迭代列表的所有專案,因此我們將對 most_frequent 字典使用 max 函式以獲取最大計數值。並返回 max_count 的值。

示例 - 另一種方法

# Function to find the multimode of the list
def multimode(lst):
   most_frequent = {}
   for num in lst:
      most_frequent[num] = most_frequent.get(num, 0) + 1

   max_count = max(most_frequent.values())
   multimode_values = [num for num, count in most_frequent.items() if count == max_count]
   
   return multimode_values

# usage
my_list = [9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6]
Output= multimode(my_list)
print(Output)

輸出

[8]

複雜度

使用 Python 查詢列表的多眾數的時間複雜度在兩種情況下均為 O(n),其中 n 是給定列表的大小。因為我們已經遍歷了列表中的專案一次。因此,時間取決於給定列表的大小。

結論

我們已成功建立了用於查詢給定列表的多眾數的程式。我們在本文中使用了兩種方法。在第一種方法中,我們使用了 statistics 模組,在第二種方法中,我們使用了 Python 的基本功能和邏輯。

更新於: 2023年10月17日

117 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.