假设输入:
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]
然而,这就像硬编码一样,有没有关于如何有效地做到这一点的建议?感谢!!!
答案 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]