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

Python如何高效统计列表中仅出现一次的元素总数量

优化方案

你原来的代码使用双层嵌套循环,时间复杂度为O(n²),列表规模较大时性能会指数级下降,最优优化方案可以将时间复杂度降到O(n),仅需两次线性遍历即可完成统计:

  1. 第一次遍历统计列表中每个水果的出现次数
  2. 第二次遍历计数出现次数等于1的元素总数

最快实现方案(推荐)

使用Python标准库内置的collections.Counter完成计数,该工具底层为C实现,性能远高于纯Python代码实现的计数逻辑:

from collections import Counter

fruits=['apple','pear','pear','apple','strawberry','lemon','orange','strawberry','tomato','passionfruit']
# 统计每个元素的出现次数
fruit_count = Counter(fruits)
# 统计仅出现一次的元素数量
unique_single = sum(1 for cnt in fruit_count.values() if cnt == 1)
print(f'There are {unique_single} fruits not duplicated in the fruits list  ')

无依赖纯Python实现

如果不想导入标准库模块,也可以用原生字典实现计数,性能同样远优于原来的双层循环:

fruits=['apple','pear','pear','apple','strawberry','lemon','orange','strawberry','tomato','passionfruit']
fruit_count = {}
for fruit in fruits:
    fruit_count[fruit] = fruit_count.get(fruit, 0) + 1
unique_single = sum(1 for cnt in fruit_count.values() if cnt == 1)
print(f'There are {unique_single} fruits not duplicated in the fruits list  ')

两种实现运行结果都和你原有代码完全一致,对于10万级以上元素的列表,性能提升可以达到数千到数万倍。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:54:06