list.count
имеет сложность O ( n ), учитывая n значений в вашем списке. Если есть m уникальных значений, это означает, что ваш алгоритм будет иметь минимальную сложность O ( m x n ). Это не желательно.
Одним из решений O ( n ) является создание счетного словаря и значений приращения при итерации:
lst = [1, 2, 3, 3, 3, 2, 1, 3, 3]
def freq(L):
d = {}
for num in L:
d[num] = d.get(num, 0) + 1
maxcount = max(d.values())
return next(k for k, v in d.items() if v == maxcount)
freq(lst) # 3
Конечно, с collections.Counter
синтаксис тривиален:
from collections import Counter
def freq(L):
return Counter(L).most_common()[0][0]