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
相关产品推荐
相关产品推荐

