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

Python列表元素出现频率统计及高效实现方案

列表唯一值频率统计实现

你当前的代码遍历了包含重复元素的原列表,每次调用count()都会全表扫描统计元素出现次数,最终得到的列表长度和原列表一致,不符合你要的「按唯一值顺序返回对应频率」的需求。

最高效实现方案

Python标准库提供的collections.Counter是该需求的最优实现,底层做了性能优化,仅需遍历列表一次就能完成所有唯一值的频率统计,时间复杂度为O(n),性能远高于手动遍历调用count()的方案。
示例代码如下:

from collections import Counter

fruits = ["apple", "banana", "cherry", "apple", "banana"]
# 统计所有唯一值的出现频率,返回结构按元素首次出现的顺序排序
fruit_counts = Counter(fruits)
# 提取频率组成列表
result = list(fruit_counts.values())
print(result)
# 输出:[2, 2, 1]

如果不想引入标准库依赖,也可以用字典手动实现统计,时间复杂度同样为O(n):

fruits = ["apple", "banana", "cherry", "apple", "banana"]
count_map = {}
for item in fruits:
    count_map[item] = count_map.get(item, 0) + 1
result = list(count_map.values())
print(result)
# 输出:[2, 2, 1]

原写法的总时间复杂度为O(n²),仅适合小体量列表使用,当列表元素较多时性能会大幅下降,不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:57:01