首页 > 解决方案 > 返回列表中最常见元素的更有效方法

问题描述

假设我们有以下代码:

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)

有没有更快的方法来获取列表中最常见的元素?

标签: pythonlistalgorithm

解决方案


您可以使用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))

推荐阅读