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 的基本功能和邏輯。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP