You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python列表众数计算代码,多众数时优先返回较小值

众数计算逻辑优化

你当前使用的原有代码如下:

def mode(list):
    modelist = max([list.count(x) for x in list])
    return [i for i in list if list.count(i) == modelist][0] 

原有代码的问题是:仅返回原列表中第一个达到最高频次的元素,当多个元素频次相同时,无法保证返回数值最小的元素,例如输入[5,2,2,5]时返回5,不符合需求。

最简修改方案

只需在筛选出所有符合最高频次的元素后取最小值即可,同时可以用去重后的集合遍历减少重复计算,修改后代码如下:

def mode(list):
    max_count = max([list.count(x) for x in list])
    return min([i for i in set(list) if list.count(i) == max_count])

效果验证

输入测试用例[5,2,2,5]时,筛选出的符合最高频次的元素为2、5,取最小值后返回2,符合预期。

大列表高效优化方案

原有代码多次调用list.count(),每次调用都会遍历一次全列表,时间复杂度较高,处理长列表时可以用collections.Counter做频次统计,优化后代码如下:

from collections import Counter

def mode(list):
    count_map = Counter(list)
    max_count = max(count_map.values())
    return min(k for k, v in count_map.items() if v == max_count)

内容的提问来源于stack exchange,提问作者Keegry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:45:03