python - 返回列表中最常见元素的更有效方法
问题描述
假设我们有以下代码:
import random
num_samples = 1000
a = list(random.randint(0,9) for _ in range(num_samples))
#sample(a, num_samples if len(a) > num_samples else len(a))
def most_common(lst):
return max(set(lst), key=lst.count)
most = most_common(a)
print(most)
有没有更快的方法来获取列表中最常见的元素?
解决方案
您可以使用Counter(它会为您完成工作)
import random
from collections import Counter
num_samples = 1000
a = list(random.randint(0, 9) for _ in range(num_samples))
# sample(a, num_samples if len(a) > num_samples else len(a))
def most_common(lst):
return max(set(lst), key=lst.count)
most = most_common(a)
print(most)
counter = Counter(a)
print(counter.most_common(1))
推荐阅读
- robotframework - 在机器人框架中模拟
- php - php在返回后继续“foreach”
- arraylist - Hashmap JAVA 中的 Arraylist
- android - OrmLite - 如何获取已删除行的计数?
- android - 如何正确使用 searchview 过滤 RecyclerView?
- apache - Solr UI 意外查询结果
- java - 如何在 Java 11 http 客户端中保持连接活动
- performance - 在函数内部,如何根据原始函数参数构造一个新函数,以便将其作为参数传递给另一个函数
- angular - Angular Material design 7,未找到组件
- javascript - 使用功能组件传递道具而不在组件内声明功能