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

Python遍历列表统计元素出现次数并存储到新列表的更优实现方法

列表元素出现次数统计的优雅Python实现

你的原有写法存在重复遍历的问题:每遍历一个元素就会扫描一次完整列表统计次数,时间复杂度为O(n²),列表元素较多时效率很低。下面是几种更优雅高效的实现方案:

  • 方案1:使用标准库collections.Counter(最推荐)
    Counter是Python专门做频次统计的内置工具,仅需扫描一次列表就能完成全量统计,时间复杂度仅为O(n),代码简洁易读。
from collections import Counter

x = ["apple", "orange", "cherry", "apple"]
count_map = Counter(x)
z = [count_map[item] for item in x]
print(z)
  • 方案2:无依赖的基础实现
    如果不想导入标准库,可以用字典自行完成频次统计,效率和Counter方案一致:
x = ["apple", "orange", "cherry", "apple"]
count_dict = {}
# 第一次遍历完成全量统计
for item in x:
    count_dict[item] = count_dict.get(item, 0) + 1
# 第二次遍历生成结果列表
z = [count_dict[item] for item in x]
print(z)
  • 方案3:极简一行写法(仅适合短列表)
    如果你的列表长度很小,不在意运行效率,可以直接用列表推导式简化原有写法:
x = ["apple", "orange", "cherry", "apple"]
z = [x.count(item) for item in x]
print(z)

注意:该方案和原有写法逻辑一致,时间复杂度仍为O(n²),不要用于元素数量过千的列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:45:03