1. 使用 `collections.Counter`
from collections import Counterdef 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 statisticsdef find_mode(nums):return statistics.mode(nums)
3. 使用 `collections.Counter` 的 `most_common` 方法

from collections import Counterdef 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] = frequencysortedDict = sorted(frequencyDict.items(), key=operator.itemgetter(1), reverse=True)maxFrequency = sortedDictkeys = [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)
以上方法都可以用来计算列表的众数。你可以根据具体需求选择合适的方法。需要注意的是,如果列表为空或者没有众数,这些方法可能会引发异常或返回不正确的结果。
