python - 检查值是否比列表中的 X 更频繁地存在的最快方法

标签 python arrays count

我有一个很长的列表(300 000 个元素),我想检查该列表中的每个元素是否存在超过 5 次。所以最简单的代码是

[x for x in x_list if x_list.count(x) > 5]

但是,我不需要统计x在列表中出现的频率,我可以在达到至少5个元素后停止计数吗? 我也不需要遍历 x_list 中的所有元素,因为我有可能在遍历列表时已经更早地检查了值 x。 知道如何获得此代码的最佳版本吗? 我的输出应该是一个列表,如果可能,顺序相同......

最佳答案

下面是基于Counter的解决方案:

from collections import Counter

items = [2,3,4,1,2,3,4,1,2,1,3,4,4,1,2,4,3,1,4,3,4,1,2,1]
counts = Counter(items)
print(all(c >= 5 for c in counts.values())) #prints True

如果我用

items = [random.randint(1,1000) for i in range(300000)]

基于计数器的解决方案仍然是零点几秒。

关于python - 检查值是否比列表中的 X 更频繁地存在的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42869827/

相关文章:

Python ijson 解析文件(ijson 来自 softwaremaniacs.org)

python - 3D 中点和圆弧之间的距离

Java对重复值的数组进行排序

c - 如何声明具有 volatile 元素的静态数组?

if-statement - google-apps-script 统计文件夹中的文件

python - 抓取结果与检查的 DOM 元素不同

JavaScript:子弹和敌人在一个数组中(拼接,重新索引)

mysql - 计算在 0 到 10 秒的特定范围内应答的调用,按计数分组

mysql - 选择多列的 Count() 大于一的地方

python - 如何生成在向量的数字之间添加 + 和 - 的所有可能性,因此总和应该是正数,使用回溯