Python - 列表的多模式
在给定的问题中,我们需要使用 Python 显示给定列表中出现频率最高的元素。基本上,此操作在 Python 中称为列表的多模式。
理解问题的逻辑
当前的问题是创建一个程序,该程序将执行操作以查找给定列表的多模式。因此,列表中使用术语多模式来指代输入列表中出现频率最高的项目集。或者我们可以说列表中某个项目的最高频率或计数。
为了找到给定列表的多模式,我们将确定给定列表中每个项目的频率计数。并显示具有最高计数或频率的项目。为了解决这个问题,我们将使用两种方法。首先,我们将使用 Python 的 statistics 模块,在第二种方法中,我们将使用基本的 Python 功能。
算法 - 使用统计数据
步骤 1 - 首先,我们将导入 statistics 模块,其中我们将使用多模式函数来返回列表中出现频率最高的项。
步骤 2 - 因此定义多模式,并在该函数中传递一个列表参数,我们必须找出该列表的多模式。
步骤 3 - 将列表定义并初始化为 the_list。并调用该函数显示输出。
示例 - 使用统计数据
import statistics #导入模块 #模块使用 def multimode(lst): return statistics.multimode(lst) # 用法 the_list = [9, 8, 8, 7, 7, 7, 6, 6, 6, 6] Output = multimode(the_list) print(Output)
输出
[6]
算法 - 另一种方法
步骤 1 - 首先,我们将创建一个名为 most_frequent 的字典,用于存储列表中项目的频率计数。
步骤 2 - 然后,我们将迭代列表中的数字。
步骤 3 - 检查每个数字。如果数字已经存在于最常见字典中。如果条件为真,则使用 get 方法将计数增加 1,并将计数存储在字典中。
步骤 4 - 如果条件为假,则表示元素不存在于 most_frequent 字典中,则将其添加到 most_frequent 字典中,初始计数为 1。
步骤 5 - 由于必须迭代列表中的所有项目,因此我们将在 most_frequent 字典上使用 max 函数来获取最大计数值。并返回 max_count 的值。
示例 - 另一种方法
# 用于查找列表多模的函数 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 # 用法 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 是给定列表的大小。因为我们对列表中的项目进行了一次迭代。所以时间取决于给定列表的大小。
结论
我们已经成功创建了查找给定列表的多模态的程序。我们在本文中使用了两种方法。在第一种方法中,我们使用了统计模块,在第二种方法中,我们使用了 Python 的基本功能和逻辑。