繁体   English   中英

如何迭代生成集合中元素的所有可能组合

[英]How can I iteratively generate all the possible combination of elements in sets

让set A=set([1,2,3]) and set B=set()现在我需要迭代生成所有可能的组合,例如set([1]) set([2]) set([3]) set([1,2]) set([1,3]) set([2,3]) set([1,2,3])我很清楚我可以使用itertools的powergenerator配方,但是伪代码在下面表格以进一步检查条件(子集条件和密度条件)

a=set()
b=set([1,2,3])
for i in b-a:
    a=a|set([i])    
    for j in a: 
        print a-set([j])

        if den(a-set[j])>=0.6:#check density criteria
                # check if a-set([j]) is subset of a on ordering criteria     

上面的print语句,即print a-set([j])给出了如下输出

set([])
set([2])
set([1])
set([2, 3])
set([1, 3])
set([1, 2])

但我需要以以下格式输出

set([1])
set([2])
set([3])
set([2, 3])
set([1, 3])
set([1, 2])
set([1,2,3])

您可以使用itertools.combinations

from itertools import combinations

list(combinations(b, 1)) + list(combinations(b, 2)) + list(combinations(b, 3))
#[(1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)]

尝试使用iterto0ls查找子集。 itertools

import itertools
a=[1,2,3]
subsets=[]
for i in range(1,4):
    for j in itertools.combinations(a,i):
        subsets.append(list(j))
print subsets

#output=[[1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]

如果set为method。 你可以链接他们,

map(set,subsets)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM