我在python中有一个列表,如果数字高于列表的平均值,我需要在列表中找到一个数字的最大出现次数。
我怎样才能做到这一点?
谢谢,
约翰。
答案 0 :(得分:2)
您可以像这样使用Counter
x = [1,2,4,3,2,2,4]
avg = sum(x)/len(x)
from collections import Counter
print [(num, count) for num, count in Counter(x).most_common() if num > avg]
<强>输出强>
[(4, 2), (3, 1)]
答案 1 :(得分:0)
使用https://stackoverflow.com/a/1520716/98191中的代码查找最常见的列表项:
foo = [1,8,8,4,5,6,7,8]
from itertools import groupby as g
def most_common_oneliner(L):
return max(g(sorted(L)), key=lambda(x, v):(len(list(v)),-L.index(x)))[0]
top = most_common_oneliner(foo)
if top >= max(foo):
print top
答案 2 :(得分:0)
以下将输出元素(count,element),其中元素大于列表的平均值:
x = [1,2,4,3,2,2,4]
print reduce(max, [(x.count(i), i) or i in x if i > sum(x)/len(x)])
#prints (2,4)
保存平均值而不是每次计算它是一个更好的选择。