Найти до 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])
Вот и все дела)