2011-10-07 151 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(節點,子節點):構造一個新的節點,在其子節點被修改後替換當前節點。