我有以下列表:找到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
我更新了我的答案,以更好地反映您的要求。 –