Найти до 3 самых больших числа из списка в Python

Имеется несколько списков с числами, допустим: [31, 44, 12, 3, -1], [12, 2], [], из них нужно вернуть до 3 самых больших чисел ([31, 44, 12], [12,2], []), не нарушая последовательности, как это сделать?


Ответы (2 шт):

Автор решения: Stanislav Volodarskiy

Тяжёлая артиллерия. Три самых больших значения из списка собираем в множество. Список фильтруем относительного этого множества, выбираем три первых элемента:

import heapq
import itertools


def largest(lst, n):
    s = set(heapq.nlargest(n, lst))
    return list(itertools.islice((v for v in lst if v in s), n))
→ Ссылка
Автор решения: Артем Котов

Мне кажется все гораздо проще.

#допустим ты засунешь все списки в один
all_lists = [list1,list2,list3]
reversed_result = []
for list in all_lists:
    reversed_result.append(sorted(list, reverse=True)[:3])

Вот и все дела)

→ Ссылка