Спасибо за критику, теперь буду более внимателен в своих действиях и смотреть в перспективу на улучшение общей производительности программы. Действительно, мой вариант оказался очень плохим при работе с большими списками, сейчас сам проверил и разница в скорости вычислений видна невооруженным глазом и без бенчмарков.
Ошибка, как я понял, у меня была в том, что функция пересчитывала весь список для каждого элемента этой же функции, т.е. например для величины списка в 10000 элементов общее количество действий выходит 10000 * 10000 против 10000 * 2 (для вычисления max и для вычисления count(max))
Сейчас я учел эту ошибку и сделал вот так:
a=[ ... ]
(lambda x: [max(x)] * x.count(max(x))) (a)
Я лезу с лямбдой постоянно, потому что мне нужно решить эту задачу в 1 действие (дали задание такое =)
Ну или как уже предлагали выше:
a = [ ... ]
a = [b.append(x) for x in a if x == max(a)]