我想获得给定长度的所有可能子集,这些子集可以导致真实集合。因此对于集合[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 :(得分:3)
如何创建长度为2的组合,并通过计算与原始集合的差异来生成余数?这就是我的意思:
from itertools import combinations
s = {'a', 'b', 'c'}
res = [(set(comb), s.difference(comb)) for comb in combinations(s, 2)]
生成:
[({'a', 'c'}, {'b'}), ({'b', 'c'}, {'a'}), ({'a', 'b'}, {'c'})]
答案 1 :(得分: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