2011-10-07 155 views
3

我注意到Python有很多专门用于处理数据结构(各种迭代器,生成器,列表解析等)的特性。
树的数据结构

您能否告诉我一些有用的树木数据结构?pythonic style?树中的节点将包含一些数据,并且会有经典操作,如children,siblings等。您可以通过一些智能示例(例如编程的功能方法)介绍一些涉及树木的python特殊功能

+0

[寻找一个好的Python树数据结构]可能的重复(http://stackoverflow.com/questions/3009935/looking-for-a-good-python-tree-data-structure) – geoffspear

+0

@Wooble我的问题是关于使用树木的功能特征。 – xralf

回答

1

您可以使用ElementTree API,它在Python standard libraryLXML库中实施。它用于XML处理,但您也可以将其用于处理通常的树形结构数据(并免费获得XML序列化)。

+0

并且您能否演示一些您推荐的数据结构的功能特性? – xralf

+1

@xralf:API本身没有拉链或其他FP风格的构造,但您可以随时在其上编写功能程序,并且免费获得声明式语言XPath。 –

1

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

1

ETE toolkit实现了树数据结构的许多高级操作,从遍历函数或节点注释到树图像生成。你可能想看看its tutorial

0

这里有一个clojure的用于python的zip库的端口。

https://github.com/trivio/zipper

这是一个不可改变的数据结构,它总是返回每个操作的新的结果。 适用于函数式编程或者当您想保留对树进行编辑的历史记录时。

你可以操纵可以用3个功能进行描述的任何树:

分支(节点):返回true,如果该节点可以有孩子

儿童(节点):返回一个元组节点的子节点

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