2014-07-03 62 views
0

我正在通過樹進行搜索。在每個節點上,我需要找到一些組合集合的交集,它們都包含在list_of_sets = [set_1,set_2,...,set_n]中。使用元組(i,j,k,...)構造交集list_of_sets [i]&list_of_sets [j]&list_of_sets [k]

我使用索引元組來跟蹤我處於哪個節點,即node = [i,j,k,...]。根據樹中的位置,這個元組的大小從1到5不等。

在任何節點,例如,節點= [I,J,K,L],我想構建這樣的表達:

intersection = list_of_sets[i] & list_of_sets[j] & list_of_sets[k] & list_of_sets[l] 

我絕對不知道在這一個方式開始。您的意見深表感謝;)

回答

2
In [34]: sets, node = [{1, 4}, {4, 5}, {4, 10}], (0, 1, 2) 

In [35]: set.intersection(*(sets[x] for x in node)) 
Out[35]: {4} 

上述工作,因爲sets' intersection method接受任意數量的相交集。您還可以使用operator.itemgetter

In [38]: set.intersection(*itemgetter(*node)(sets)) 
Out[38]: {4} 
+1

它的清潔使用'set.intersection'爲不受約束的方法,這樣你就可以只寫'set.intersection(* itemgetter(*節點)臺(套))',而無需在調用該方法的集合和其他集合之間進行嚴格區分。 – chepner

+0

@chepner哦,對。謝謝 :) – vaultah

相關問題