我注意到Python
有很多專門用於處理數據結構(各種迭代器,生成器,列表解析等)的特性。
樹的數據結構
您能否告訴我一些有用的樹木數據結構?pythonic style
?樹中的節點將包含一些數據,並且會有經典操作,如children
,siblings
等。您可以通過一些智能示例(例如編程的功能方法)介紹一些涉及樹木的python特殊功能
我注意到Python
有很多專門用於處理數據結構(各種迭代器,生成器,列表解析等)的特性。
樹的數據結構
您能否告訴我一些有用的樹木數據結構?pythonic style
?樹中的節點將包含一些數據,並且會有經典操作,如children
,siblings
等。您可以通過一些智能示例(例如編程的功能方法)介紹一些涉及樹木的python特殊功能
您可以使用ElementTree API,它在Python standard library和LXML庫中實施。它用於XML處理,但您也可以將其用於處理通常的樹形結構數據(並免費獲得XML序列化)。
並且您能否演示一些您推薦的數據結構的功能特性? – xralf
@xralf:API本身沒有拉鍊或其他FP風格的構造,但您可以隨時在其上編寫功能程序,並且免費獲得聲明式語言XPath。 –
查看NetworkX的文檔,這是一個用於處理基於圖的數據結構(包括樹)的Python工具包。
ETE toolkit實現了樹數據結構的許多高級操作,從遍歷函數或節點註釋到樹圖像生成。你可能想看看its tutorial
這裏有一個clojure的用於python的zip庫的端口。
https://github.com/trivio/zipper
這是一個不可改變的數據結構,它總是返回每個操作的新的結果。 適用於函數式編程或者當您想保留對樹進行編輯的歷史記錄時。
你可以操縱可以用3個功能進行描述的任何樹:
分支(節點):返回true,如果該節點可以有孩子
兒童(節點):返回一個元組節點的子節點
make_node(節點,子節點):構造一個新的節點,在其子節點被修改後替換當前節點。
[尋找一個好的Python樹數據結構]可能的重複(http://stackoverflow.com/questions/3009935/looking-for-a-good-python-tree-data-structure) – geoffspear
@Wooble我的問題是關於使用樹木的功能特徵。 – xralf