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