Python如何统计列表中仅出现一次的非重复元素数量
Python统计列表中仅出现一次的元素总数
基于你已经在用的Counter,可以用非常简洁的生成器表达式实现需求,完全符合Python编码风格:
from collections import Counter words = ['a', 'b', 'c', 'a'] # 遍历计数结果,统计出现次数恰好为1的元素个数 non_repeat_count = sum(1 for count in Counter(words).values() if count == 1) print(non_repeat_count)
执行后输出结果就是你期望的2。
如果不想使用Counter,也可以直接通过列表方法实现:
words = ['a', 'b', 'c', 'a'] non_repeat_count = sum(1 for item in words if words.count(item) == 1) print(non_repeat_count)
性能提示:这种写法的时间复杂度为O(n²),仅适合短列表使用;
Counter底层基于哈希表实现统计,时间复杂度为O(n),处理大长度列表时性能优势非常明显,优先推荐使用。
如果你还需要同时获取所有仅出现一次的元素本身,可以直接筛选键值对:
from collections import Counter words = ['a', 'b', 'c', 'a'] non_repeat_items = [item for item, cnt in Counter(words).items() if cnt == 1] # 此时non_repeat_items的值为['b', 'c'],取长度即可得到统计值2 print(len(non_repeat_items))
内容的提问来源于stack exchange,提问作者Rnj
相关产品推荐
相关产品推荐

