从数字列表中返回包含重复次数最多的数字的列表

时间:2014-04-16 07:14:01

标签: python list count

假设输入:

a = [1,1,1,1,2,2,3,4,5,5,5,5]

预期产出:

[1,5]

由于有4个四分之四和四个五分,它们都是重复次数最多的数字。因此我将它们放入新的列表中。

我的代码:

a.count(1) --> result1 = 4
a.count(5) --> result2 = 4
...  --> for rest of the value in a
[1, 5]

然而,这就像硬编码一样,有没有关于如何有效地做到这一点的建议?感谢!!!

2 个答案:

答案 0 :(得分:1)

试试这个,

>>> a
[1, 1, 1, 1, 2, 2, 3, 4, 5, 5, 5, 5]
>>> unique=set(a)
>>> unique
set([1, 2, 3, 4, 5])
>>> MAX=0
>>> for i in unique:
        if a.count(i)>MAX:
           MAX=a.count(i)
>>> set([i for i in a if a.count(i)==MAX])
set([1, 5])

答案 1 :(得分:1)

超低效率的单行

>>> a = [1,1,1,1,2,2,3,4,5,5,5,5]
>>> [x for x in set(a) if a.count(x) == max(map(a.count, a))]
[1, 5]

你可以像这样使用它

>>> (lambda mx=max(map(a.count, set(a))): [x for x in set(a) if a.count(x) == mx])()
[1, 5]