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.