Существует ли модуль для AVL или Красно-черный или некоторый другой тип сбалансированного двоичного дерева в стандартной библиотеке Python? Я попытался найти один, но неудачно (я относительно плохо знаком с Python).
Мы создаем базовый пользовательский AMI со всеми программами, которые, как мы знаем, нам всегда нужны в AMI.
Программное обеспечение, которое мы разрабатываем (и постоянно обновляем), хранится во внешнем месте хранения (мы используем репозиторий Maven, но вы можете использовать все, что хорошо работает с вашей средой.
Затем мы запускаем наш пользовательский AMI со всем необходимым на нем, развертываем последнюю версию нашего программного обеспечения от Maven, и мы готовы идти.
Таким образом, рабочий процесс:
Setup
Создайте пользовательский AMI с помощью материала, который нам всегда понадобится
Containing
Разработка программного обеспечения локально Развертывание двоичных файлов во внешнем месте хранения (в нашем случае репозиторий Maven) При необходимости инициируйте несколько экземпляров пользовательского AMI Копирование двоичных файлов из внешнего места хранения в каждый экземпляр Выполнить для каждого экземпляра
-121--3747437-Вы должны найти, что следующая схема позволяет то, что вы предложили.
<xs:element name="foo">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:element maxOccurs="unbounded" name="child1" type="xs:unsignedByte" />
<xs:element maxOccurs="unbounded" name="child2" type="xs:string" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
Это позволит вам создать файл, например:
<?xml version="1.0" encoding="utf-8" ?>
<foo>
<child1>2</child1>
<child1>3</child1>
<child2>test</child2>
<child2>another-test</child2>
</foo>
, который, похоже, соответствует вашему вопросу.
-121--731803-Нет, в stdlib отсутствует сбалансированное двоичное дерево. Однако из ваших комментариев кажется, что у вас могут быть и другие варианты:
O (log n)
. Если поиск - это все, что нужно, и данные уже отсортированы, модуль bisect
предоставляет двоичный алгоритм поиска для списков. Если ни одно из решений не подходит для вас, вам придется перейти к модулю стороннего производителя или реализовать свой собственный.
Нет, но есть AVL Tree Objects для Python (очень старый!) И (закрытый) проект на SourceForge - avl-деревья для Python .
в stdlib ничего подобного нет, насколько я могу судить, но быстрый взгляд на pypi дает несколько альтернатив:
Было несколько случаев, когда я обнаружил, что пакет heapq (в стандартной библиотеке) может быть полезен, особенно если в любой момент времени требуется время доступа O (1) к наименьшему элементу в вашей коллекции.
Что касается меня, я отслеживал набор таймеров и обычно просто интересовался проверкой того, готов ли к работе наименьшее время (то, которое должно быть выполнено первым) на данный момент.