2014-10-31 69 views
0

我想獲得給定長度的所有可能子集,這導致實際集合。因此,對於集合[A,B,C]和子集大小1 & 2我想計算:計算導致集合的給定大小的子集的組合

[[a,b],[c]] , [[b,c],[a]] , [[a,c],[b]] 

我一直在嘗試代碼從Algorithm to calculate power set (all possible subsets) of a set in R,但該算法將生成所有的子集,而不僅僅是那些領先於該集合的那些。

我試圖解決這個問題的大小〜30。我想計算每個子集組合的分數,只保留最好的分數,這樣我希望記憶沒有任何困難。選擇的編程語言是python。

+0

子集+ subset =全套;他們加起來就是整個集合 – Maocx 2014-10-31 16:55:34

+0

好吧 - 你的意思是[分區](http://en.wikipedia.org/wiki/Partition_of_a_set)。 – senderle 2014-10-31 19:47:15

回答

3

如何創建長度爲2的組合,並通過計算與原始集合的差異來生成餘數?這就是我的意思是:

from itertools import combinations 

s = {'a', 'b', 'c'} 

res = [(set(comb), s.difference(comb)) for comb in combinations(s, 2)] 

生成:

​​
0

您可以使用下面的代碼查找內部列表子集的大小:

 list1=[[1,2,3],[1,3],[2,3,3,4]] 
    x= len(list1) 
    while(x>0): 
     print len(list1[x-1]) 
     x=x-1 

輸出:

4 
    2 
    3