Очередь с приоритетом — это структура данных, которая поддерживает две операции: добавление элемента и извлечение минимального из всех ранее добавленных элементов. Одной из самых распространённых реализаций очереди с приоритетом является бинарная куча. Это полное бинарное дерево со следующим свойством: ключ, хранящийся в каждом узле, меньше или равен (≤) ключам в дочерних узлах. Минимум всех элементов находится в корне такого дерева. 1 3 7 5 4 9 8 15 16 17 18 19 В бинарной куче сложность операций вставки и извлечения составляет O(log n). Обычный способ хранения полного бинарного дерева в памяти — это массив, где дочерние элементы для x[i] находятся в x[2*i+1] и x[2*i+2]. [1, 3, 7, 5, 4, 9, 8, 15, 16, 17, 18, 19] В Python нет бинарной кучи в виде класса, но предоставляется ряд функций, которые позволяют использовать список как бинарную кучу. Эти функции находятся в модуле heapq . In [1]: from heapq import * In [2]: heap = [3,2,1] In [3]: heapify(heap) In [4]: heap Out[4]: [1, 2, 3] In [5]: heappush(heap, 0) In [6]: heap Out[6]: [0, 1, 3, 2] In [7]: heappop(heap) Out[7]: 0 In [8]: heap Out[8]: [1, 2, 3] 📲 Мы в MAX 👉 @BookPython
БиБиблиотека Python разработчика
Книги по программированию на Python
КатегорияOtherЯзыкRUДобавлен06 июл. 2026 г.КачествоПроверен
Подписчики8.9K
Сред. просмотры129.9K
ERR11.6%
Цена-- RUB
Цена / подписчик--
Цена / просмотр--
Метрики обновлены: 06 июл. 2026 г.
Последние посты
Если вы хотите перехватить как IndexError , так и KeyError , вы можете и должны использовать LookupError , их общего предка. Это оказалось полезным при доступе к сложным вложенным данным. try: db_host = config['databases'][0]['hosts'][0] except LookupError: db_host = 'localhost' 📲 Мы в MAX 👉 @BookPython
>>> exit Use exit() or Ctrl-D (i.e. EOF) to exit Вы когда-нибудь задумывались, почему при попытке выйти из интерактивного Python с помощью простого exit или quit появляется это сообщение? Решение довольно неожиданное, но изящное. Это не специальный случай для интерактивной оболочки, она просто показывает представление каждого вычисленного результата, а эта строка - просто представление функции exit. Строго говоря, вы не должны использовать exit в своих повседневных проектах, поскольку она была создана специально для интерактивной оболочки. Вместо этого используйте sys.exit() . 📲 Мы в MAX 👉 @BookPython
Что такое «сырые» строки (Raw Strings) в Python? В Python "сырые" строки (или raw strings ) — это строки, в которых символы обратного слэша \ воспринимаются буквально, а не как специальные символы (например, \n для новой строки, \t для табуляции и т. д.). Они обозначаются префиксом r перед строкой, например: r"строка" . Сырые строки удобны, когда вам нужно использовать много обратных слэшей, например, в путях к файлам или регулярных выражениях, где \ часто встречается. Сырые строки упрощают код и помогают избежать ошибок, связанных с экранированием символов. Пример использования # Обычная строка print("C:\\new_folder\\file.txt") # Выводит: C:\new_folder\file.txt # Сырая строка print(r"C:\new_folder\file.txt") # Выводит: C:\new_folder\file.txt В первом случае \\ используется для экранирования, чтобы Python не воспринял \n как символ новой строки. В случае сырой строки r"..." , экранирование не нужно, так как \ воспринимается буквально. 📲 Мы в MAX 👉 @BookPython
Сравнение производительности dict() и {} в Python Какое-то время назад, во время разбора кода, мы обсудили выбор dict() вместо {} в новом коде на Python. Коллега утверждал, что dict() более читаем и чётче выражает предназначение кода, поэтому следует предпочесть его. Меня это не убедило, но в тот момент контраргументов не нашлось, поэтому я воздержался. Это заставило меня задуматься: в чём разница между типом dict и литеральным выражением {} ? https://habr.com/ru/articles/788440/ original https://madebyme.today/blog/python-dict-vs-curly-brackets/ 📲 Мы в MAX 👉 @BookPython