树形数据结构

3
我注意到Python在处理数据结构方面有很多特色,例如各种迭代器、生成器、列表推导式等。
您能否为我提供一些在Pythonic style中处理树形结构时有用的数据结构? 树中的节点将包含一些数据,并且会有一些经典操作,例如childrensiblings等。 你可以用一些聪明的例子来展示使用Python处理树的一些特殊功能(如函数式编程)。”

可能是重复的问题:寻找一个好的Python树数据结构 - Wooble
@Wooble 我的问题是关于使用树的功能特性。 - xralf
4个回答

1
你可以使用 ElementTree API,它在 Python 标准库LXML 库中都有实现。它是用于 XML 处理的,但你也可以将其用于处理树形结构数据(并免费获得 XML 序列化)。

你能演示一些你所推荐的数据结构的功能特点吗? - xralf
1
@xralf:API 本身没有拉链或其他函数式编程风格的结构,但你可以在其上编写函数式程序,并免费获得声明式语言 XPath。 - Fred Foo

1
查看NetworkX文档,这是一个用于处理基于图形的数据结构(包括树)的Python工具包。

1

ETE工具包 实现了许多针对树形数据结构的高级操作,从遍历函数或节点注释到生成树形图像。你可能想要查看它的教程


0
这是一个针对Python的Clojure zip库的移植版本。

https://github.com/trivio/zipper

它是一种不可变的数据结构,每次操作都会返回一个新的结果。非常适合函数式编程或者当你想要保留对树所做编辑历史记录时。

您可以操纵任何可以用3个函数描述的树:

branch(node):如果节点可以有子节点,则返回true

children(node):返回节点的子节点元组

make_node(node, children):在其子节点被修改后,构造一个新节点以替换当前节点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接