這個特殊的資料結構支援高效率的合併作業,而且有明確的遍歷順序。常用於從規則和層面累積遞移依附元件的資料。詳情請參閱這篇文章。
depset 的元素必須能夠進行雜湊處理,且所有類型都與內建類型 (由內建類型(x) 函式所定義) 相同,但 desetset 不只是雜湊集,也不支援快速成員測試。如果您需要一般集的資料類型,可以使用字典 (其中所有鍵對應至 True
) 來模擬。
集數不可變動。您應使用建構函式函式來建立這類函式,並透過 transitive
引數與其他 DEP 合併或增強。
order
參數會決定將 desetset 轉換成可疊代完成的遍歷種類。可能的值有四種:
"default"
(原為"stable"
):未指定順序 (但為確定性)。"postorder"
(原為"compile"
):從左到右的排序。精確地說,這會以遞迴方式掃遍所有子項,從最左邊到最左邊,直接元素會由左到左。"preorder"
(原為"naive_link"
):從左到右預購。精確地說,這會使最直接的元素與最左邊優先,依序往右移動。"topological"
(原為"link"
):從根到到葉的拓撲排序。不提供由左至右保證。
只有在兩個集合的順序相同,或是其中一個集合有 "default"
順序時,系統才會合併兩個集合。在後面的例子中,產生的 depset 順序會與其他物件相同。
設定值可能會包含重複的值,但進行疊代時會使用 to_list()
來略過這些值。重複的值可能會幹擾排序語意。
會員
to_list
list depset.to_list()以 pendset 的周遊順序傳回元素清單,不含重複元素。請注意,對於在集合中多次加入的元素,順序未指定 (但具有確定性)。此外,如果是
"default"
排序的 DEP 和子集的元素,其順序與上層 DEP 集的順序不同,也會指定順序。該清單為複本,修改後對 depset 的影響,反之亦然。