Пример Python heapq

Персонализированный диспетчер задач на Python Программирование и разработка

Всякий раз, когда мы имеем дело с коллекциями данных, мы можем захотеть отсортировать наименьший элемент или наоборот. Heapq означает кучу и очереди. Они известны тем, что решают множество проблем, в которых нужно найти лучший элемент в наборе данных. Куча Python является частью стандартной библиотеки. Эта функция включает использование обычного списка Python для создания кучи.

Поскольку heapq состоит из двух частей: кучи и очереди. Кучи — это осязаемые типы структур данных. А очередь относится к предполагаемому типу в структурах данных. Предполагаемые структуры данных участвуют в определении интерфейса. В то время как структуры данных осязаемого / конкретного типа обычно определяют реализацию.

Кроме того, и куча, и очередь объединяются, чтобы эффективно работать на подходе приоритета. Два фактора определяют приоритет. Первый — присвоить наибольшее свойство самому большому элементу. И второй — уступка высшей собственности наименьшему приоритету. Python heapq применяет второй, более распространенный подход.

Очередь с приоритетом

Это наиболее изощренная форма простой очереди. Основная очередь выводится из очереди приоритетной очередью в элементы с более низким приоритетом. Язык Python использует эту приоритетную очередь для реализации в виде минимальной кучи.

Сортировка в heap

В программировании, особенно в структурах данных, куча представляет собой полное двоичное дерево. У кучи есть два основных варианта, к которым она применяется, по отдельности.

  • Max-heap: родительский узел больше дочернего.
  • Min-heap: родительский узел меньше или равен дочернему узлу.

Heapq как модуль

Это модуль Python, который использует минимальную кучу, как мы описали ранее. Например, поиск наименьшего и наибольшего чисел в предоставленном списке.

Функции Heapq

  • Heapify: это основная функция, которая используется для преобразования обычного списка в кучу. Это означает, что наименьшее число в списке смещается к первому месту, то есть к позиции index [0]. В то же время все остальные элементы в списке не сортируются этой функцией.
  • Heappop: это функция стека pop (), которая используется для извлечения элемента из списка. А в случае с heappop возвращается самый маленький предмет.
  • Heappush: как и функция push (), эта функция добавляет новый элемент в кучу и не вызывает изменений в последовательности.
  • Heapreplace: наименьший элемент в списке заменяется новым элементом, предоставляемым этой функцией.
Читайте также:  Случайный выбор из списка Python

Мы обсудим все эти функции индивидуально и вместе.

Создание Heap

Мы создадим Heap, используя функцию heapify для простого списка. Библиотека python используется для импорта модулей. Эта библиотека позволяет выполнять все операции.

# Import heapq

Мы создадим Heap, используя функцию

Эта функция переупорядочивает все элементы списка, позволяя наименьшему из них в начале, в то время как другие элементы не обрабатываются таким образом. Эта функция похожа на сортировку, но только для первого индекса в случае массива. Представьте список с числами. А затем примените функцию heapify.

# Heapq.heapify(A)

Эта функция применяется и вызывается с именем библиотеки heapq, а список передается в качестве параметра. Похоже, это встроенная функция, потому что необходимо объявить пользовательскую функцию. После звонка список распечатывается. После выполнения кода перейдите к консоли вывода.

Эта функция применяется и вызывается с именем библиотеки heapq

Вы увидите, что «41» заменяется на «1», так как это самый маленький из всех элементов, тогда как все остальные элементы расположены случайным образом.

Вставить новый элемент в heap

Если вы хотите вставить новый элемент в уже созданную кучу, мы можем просто добавить этот элемент с помощью функции heappush (). По умолчанию каждый новый элемент добавляется по последнему индексу. Но вы можете снова использовать функцию heapify, чтобы вывести только что добавленный элемент на первое место, если он самый маленький. Если список не отсортирован, сначала примените heapify. А затем используйте функцию push.

# Heapq.heappush(A,6)

В вызове функции аргументы содержат как список, так и элемент, который вы хотите ввести в список. После завершения кода выполните его, вы увидите, что список отображается в виде кучи, а в следующей строке отображается список с дополнительным номером в конце.

В вызове функции аргументы содержат как список, так и элемент, который вы хотите ввести в список

Удалить элемент из списка heap

Если вы хотите удалить элемент данных из heapq, вы можете применить функцию push. Он удалит элемент по первому индексу, то есть [0]. Это наименьший элемент списка кучи. Рассмотрим список предметов. Примените к нему функцию кучи, а затем удалите элемент, чтобы на выходе был взят самый маленький элемент.

# Heapq.heappop(A)

После применения этой функции воспользуйтесь функцией печати, отобразится весь список. Удаляется только первый элемент. Вместо этого элемента следующий наименьший размещается с нулевыми индексами.

Читайте также:  Руководство по бессерверным вычислениям и их развертыванию

После применения этой функции воспользуйтесь функцией печати

Заменить элемент в heap

Теперь давайте рассмотрим, как заменить элемент в куче. Как и в случае с другими функциями, первым делом нужно заполнить список до кучи. После этого функция замены возьмет на себя заваленный список и элемент, который нужно ввести вместо другого элемента.

# Heapq.heapreplace(A,8)

Здесь следует отметить одну вещь: наименьшее число всегда удаляется, а новый номер помещается в какое-то место, которое не определено, или порядок неизвестен.

наименьшее число всегда удаляется, а новый номер помещается

Теперь к списку применяются две комбинированные операции. Один из них — heappushpop (), а другой — уже хорошо известная heapreplace (). В этом примере мы берем два списка и отдельно заполняем оба списка. Heappushpop () возьмет элемент, чтобы добавить этот элемент в список, и в то же время удалит самый маленький элемент.

В выводе отображается число, выведенное в первом операторе печати

В выводе отображается число, выведенное в первом операторе печати, в то время как другой имеет дело с заменой нового числа меньшим.

в то время как другой имеет дело с заменой нового числа меньшим

 

Следующие применяемые операции — это методы сравнения.

Nsmallest : возвращает наименьший элемент среди всех присутствующих в списке.

Nlargest : возвращает самый большой элемент и удовлетворяет условию, работая с ключом, если он предоставлен.

возвращает самый большой элемент и удовлетворяет условию, работая с ключом

Сначала список заполняется в виде кучи, а затем мы применяем обе операции построчно.

# Heapq.nlargest(3,A)

Со списком передается аргумент. Этот аргумент указывает, что нужно выбрать 3 наибольших числа.

Этот аргумент указывает, что нужно выбрать 3 наибольших

Аналогичным образом, в случае наименьшего числа, 3 наименьших элемента выбираются из списка с кучей.

# Heapq.nsmallest(3,A)

3 наименьших элемента выбираются из списка с кучей

Теперь вы можете проверить результат работы обеих функций в получившейся консоли.

Теперь вы можете проверить результат работы обеих функций в получившейся консоли

Заключение

«Пример Python heapq» — это статья, в которой в совокупности перечислены все основные функции и операции кучи и очереди для работы в качестве модуля. Эта функция python помогает пользователю отсортировать элемент по первому индексу, поэтому, если кто-то хочет узнать первый элемент в отсортированном массиве, его можно получить из функции heapq. Однако другие элементы не устроены. Куча также используется в искусственном интеллекте и операционных системах. Завершив это руководство, вы будете хорошо знакомы с heapq и его функциями в python.

Оцените статью
bestprogrammer.ru
Добавить комментарий