1. 使用 `collections.Counter`
from collections import Counter
def find_mode(nums):
counter = Counter(nums)
max_count = max(counter.values())
mode = [k for k, v in counter.items() if v == max_count]
return mode if len(mode) == 1 else mode 如果只有一个众数,返回单个众数,否则返回所有众数
2. 使用 `statistics.mode`
import statistics
def find_mode(nums):
return statistics.mode(nums)
3. 使用 `collections.Counter` 的 `most_common` 方法
from collections import Counter
def find_mode(arr):
c = Counter(arr)
max_count = c.most_common(1) 获取出现次数最多的元素及其次数
modes = [k for k, v in c.items() if v == max_count] 获取所有出现次数等于最大次数的元素
return sorted(modes) 返回排序后的众数列表
4. 使用 `set` 和 `list` 进行去重和计数
def find_mode(numList):
uniqueList = list(set(numList)) 去重
frequencyDict = {}
for num in uniqueList:
frequency = numList.count(num)
frequencyDict[num] = frequency
sortedDict = sorted(frequencyDict.items(), key=operator.itemgetter(1), reverse=True)
maxFrequency = sortedDict
keys = [key for key, value in frequencyDict.items() if value == maxFrequency]
return sorted(keys) 返回排序后的众数列表
5. 使用 `max` 函数和 `lambda` 表达式
def find_mode(lst):
return max(lst, key=lst.count)
以上方法都可以用来计算列表的众数。你可以根据具体需求选择合适的方法。需要注意的是,如果列表为空或者没有众数,这些方法可能会引发异常或返回不正确的结果。