Python - 列表的多模式

pythonserver side programmingprogramming

在给定的问题中,我们需要使用 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 的基本功能和逻辑。


相关文章