Андрей
Высший разум
(483799)
4 года назад
a = [30, 20, 100, 32, 57, 10, 32, 57, 10, 35, 100, 31, 32]
l = {a.count(i): i for i in set(a)}
print(l[max(l)])
Ярослав
Искусственный Интеллект
(107899)
4 года назад
Алгоритмически это решается так (в один проход):
пусть элемент = неЧисло, повторы = хэштаблица();
пока (число из числа) {
пусть максПовторов = повторы[элемент] или 0;
пусть повторыЧисла = повторы[число] = (повторы[число] или 0) + 1;
если (неЧисло(элемент) или (повторыЧисла > максПовторов))
элемент = число;
}
вывод(элемент, повторы[элемент]);
А как на червяке, да покороче - справочник по синтаксису поможет.
Реализация на скриншоте явно неоптимальна из-за вложенного цикла, то есть выполняться будет тем дольше, чем больше чисел. У хэштаблиц же, время доступа по ключу всегда ➝O(1).
// Удвоил объем псевдокода, чтобы показать: не всегда краткость оправдана. Код пишется в первую очередь для программера, поэтому он должен быть читаем (большой объем с читаемостью "по диагонали" всегда лучше маленького комочка спагетти-кода: на прочтении, это секунды против минут). Сокращать следует магией языка, такой как унарные операторы и хелпер-функции работы со структурами... а не экономией символов.