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

Python频率统计代码优化:获取列表中最高频数字

获取列表中出现频率最高的数字

我来帮你搞定这个问题!你的现有代码已经能统计出1到8各自的出现次数了,现在要找出频率最高的数字,其实可以从几个方向修改,我给你几个实用的方案:

方案一:基于你现有代码优化

你的原代码已经搭建了统计频率的基础,只需要在最后添加逻辑找到对应频率最高的数字即可。另外还可以优化一下count列表的创建方式,不用基于原列表长度,而是基于列表中最大的数字,这样更节省空间:

A = [1,2,3,4,4,4,5,6,6,6,6,6,7,8,8,8,8,8,8,7,7]
def countFreq(A):
    # 用max(A)+1创建count列表,只覆盖到实际存在的最大数字,更高效
    count = [0] * (max(A) + 1)
    for num in A:
        count[num] += 1
    # 找到最高频率值
    max_freq = max(count)
    # 筛选出所有频率等于最高值的数字(索引对应原数字)
    high_freq_nums = [num for num, freq in enumerate(count) if freq == max_freq]
    return high_freq_nums

print(countFreq(A))  # 输出: [8]

这里enumerate(count)会同时返回索引(也就是原列表中的数字)和对应的频率值,通过列表推导式就能快速筛选出目标数字。如果有多个数字频率相同且都是最高的(比如假设8和6出现次数一样),这个方法会返回所有符合条件的数字。

方案二:用Python内置工具简化代码

Python的collections.Counter是专门用来统计元素频率的工具,用它来实现会更简洁、可读性更高,尤其适合数字范围较大的场景:

from collections import Counter

A = [1,2,3,4,4,4,5,6,6,6,6,6,7,8,8,8,8,8,8,7,7]
def get_highest_freq_num(A):
    # 直接生成数字-频率的字典
    freq_counter = Counter(A)
    # 获取最高频率
    max_freq = max(freq_counter.values())
    # 筛选出所有频率最高的数字
    high_freq_nums = [num for num, freq in freq_counter.items() if freq == max_freq]
    return high_freq_nums

print(get_highest_freq_num(A))  # 输出: [8]

Counter会自动帮你完成频率统计,不需要手动维护计数列表,代码逻辑更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:31:27