我有一个子组列表:((1,2),(3,4),(5,6,7))
我需要获得给定子组之间的所有子组(而不仅仅是子组内的子组),
所以对于上面的例子我会得到:
((1,3),(1,4),(1,3,5),(1,3,6),(1,3,7),(1,4,5).....)
我试过了:
itertools.product(*[[1,2],[3,4],[5,6,7]])
但结果是:
(1,3,5) (1,3,6) (1,3,7) (1,4,5) (1,4,6) (1,4,7) (2,3,5) (2,3,6) (2,3,7) (2,4,5) (2,4,6) (2,4,7)
但是(1,3)也是一个有效的组(并且它在结果中缺失)
答案 0 :(得分:0)
from itertools import combinations
x = sum(((1,2),(3,4),(5,6,7)),())
print [combination for i in range(1,len(x)+1) for combination in combinations(x,i)]
请注意,如果共享一些indince,这将会重复。如果这是不需要的使用:
x=set(sum(((1,2),(3,4),(5,6,7)),()))