Python:Рецепты/Поиск N максимальных и минимальных элементов: различия между версиями

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Строка 6: Строка 6:
 
==Задача==
 
==Задача==
  
 
+
У вас есть коллекция элементов и вы хотите создать список из N максимальных или минимальных элементов.
  
 
==Решение==
 
==Решение==
  
 
+
Для этого подойдёт модуль [[heapq]], в котором есть две функции nlargest() и nsmallest().
  
 
==Пример==
 
==Пример==
  
 
===№1===
 
===№1===
 +
 +
Дана последовательность чисел:
  
 
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
 
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
 +
nums = [111, -4, 0, 10, 56, -38, 11, 78, -9, 100, 99, 1,2,3]
 +
</syntaxhighlight>
 +
 +
Импортируем модуль:
 +
 +
<syntaxhighlight lang="python" enclose="div">
 +
import heap q
 +
</syntaxhighlight>
 +
 +
Получим 3 максимальных числа из последовательности:
  
 +
<syntaxhighlight lang="python" enclose="div">
 +
print(heapq.nlargest(3, nums))
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
Результат:
  
 
<syntaxhighlight lang="python" enclose="div">
 
<syntaxhighlight lang="python" enclose="div">
 +
[111, 100, 99]
 +
</syntaxhighlight>
  
 +
Получим 3 минимальных числа из последовательности:
 +
 +
<syntaxhighlight lang="python" enclose="div">
 +
print(heapq.nsmallest(3, nums))
 +
</syntaxhighlight>
 +
 +
Результат:
 +
 +
<syntaxhighlight lang="python" enclose="div">
 +
[-38, -9, -4]
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Версия 20:15, 30 апреля 2020

Проверка/Оформление/Редактирование: Мякишев Е.А.


Поиск N максимальных и минимальных элементов

Задача

У вас есть коллекция элементов и вы хотите создать список из N максимальных или минимальных элементов.

Решение

Для этого подойдёт модуль heapq, в котором есть две функции nlargest() и nsmallest().

Пример

№1

Дана последовательность чисел:

1 nums = [111, -4, 0, 10, 56, -38, 11, 78, -9, 100, 99, 1,2,3]

Импортируем модуль:

import heap q

Получим 3 максимальных числа из последовательности:

print(heapq.nlargest(3, nums))

Результат:

[111, 100, 99]

Получим 3 минимальных числа из последовательности:

print(heapq.nsmallest(3, nums))

Результат:

[-38, -9, -4]

См.также

Ссылки на полезные ресурсы

Внешние ссылки