我有以下列表:找到2 ^元素的n -2个组合在一个列表
list1 = ['g1','g2','g3','g4']
我想找到2^n-2
组合,其中n
是列表中的项目的总数。对于n = 4
,结果应该是2^4 -2 = 14
,即14个组合。
的组合方式如下:
[[['g1'],['g2','g3','g4']],[['g2'],['g1','g3','g4']], [['g3'],['g1','g2','g4']],['g4'],['g1','g2','g3']],[['g1','g2'],['g3','g4']],[['g1','g3'],['g2','g4']],[['g1','g4'],['g3','g4']],[['g2','g3'],['g1','g4']],
[['g2','g4'],['g1','g3']],[['g3','g4'],['g1','g2']],[['g1','g2','g3'],['g4']],[['g2','g3','g4'],['g1']],[['g3','g4','g1'],['g2']],[['g4','g1','g2'],['g3']]]
我知道一种方法: 在第一次迭代中采取单个元件,并把它放入一个列表和第二列表的其它元素:['g1'],['g2','g3','g4']
在第二次迭代中采取在一个2种元素列表和第二列表中的其他元素。 ['g1','g2'],['g1','g4']
有没有其他方法? 我正在用python编写这个程序。 我的方法是昂贵的。有没有任何库方法可以快速执行此操作。
你是什么意思的代价?无论实现如何,生成组合的算法复杂度都是指数级的。 – hyades
我更新了我的答案,以更好地反映您的要求。 –