Структура данных для деревьев - PullRequest
3 голосов
/ 07 октября 2011

Я заметил, что Python имеет довольно много специализаций для работы со структурами данных (различные итераторы, генераторы, списки и т. Д.).

Не могли бы вы посоветовать мне некоторые полезные структуры данных?для работы с деревьями в pythonic style?Узлы в дереве будут содержать некоторые данные, и будут классические операции, такие как children, siblings и т. Д. Вы можете представить некоторые специальные функции Python, работающие с деревьями, с некоторыми умными примерами (например, функциональный подход к программированию)

Ответы [ 4 ]

1 голос
/ 07 октября 2011

Посмотрите документы для NetworkX , набора инструментов python для обработки структур данных на основе графов, включая деревья.

1 голос
/ 23 июня 2013

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

1 голос
/ 07 октября 2011

Вы можете использовать API ElementTree , который реализован в стандартной библиотеке Python и в библиотеке LXML . Он предназначен для обработки XML, но вы также можете использовать его для обработки данных с древовидной структурой в целом (и получить сериализацию XML бесплатно).

0 голосов
/ 28 декабря 2013

Вот порт zip-библиотеки clojure для python.

https://github.com/trivio/zipper

Это неизменная структура данных, которая всегда возвращает новый результат для каждой операции. Идеально подходит для функционального программирования или когда вы хотите сохранить историю изменений, внесенных в дерево.

Вы можете манипулировать любым деревом, которое можно описать с помощью 3 функций:

branch (node): возвращает true, если у узла могут быть дочерние элементы

children (node): возвращает кортеж потомков узла

make_node (node, children): Создает новый узел для замены текущего узла после того, как его дочерние элементы были изменены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...