2017-03-26 9 views
1

を返すためにitertools.combinationsは、今私が使用しています:Pythonの:次第に大きく組み合わせ

list_one = ((1, 2), (3, 4), (5, 6), (7, 8), (9, 10)) 
list_two = [] 
print "List One: " + str(list_one) 
for i in range(0, 5): 
     list_two = tuple(c for i in range(len(list_one)) 
          for c in itertools.combinations(list_one[:i], i)) 
print "List Two: " + str(list_two) 

を出力する:私が欲しいもの

List One: ((1, 2), (3, 4), (5, 6), (7, 8), (9, 10)) 
List Two: ((), ((1, 2),), ((1, 2), (3, 4)), ((1, 2), (3, 4), (5, 6)), ((1, 2), (3, 4), (5, 6), (7, 8))) 

は次のとおりです。だから、

List One: ((1, 2), (3, 4), (5, 6), (7, 8), (9, 10)) 
List Two: ((), ((1, 2),), ((3, 4),), ((5, 6),), ((7, 8),), ((9, 10),), ((1, 2), (3, 4)), ((1, 2), (5, 6)), ((1, 2), (7, 8)), ((1, 2), (9, 10)), ((3, 4), (5, 6)), ((3, 4), (7, 8)) ... 

最初のラウンドは単一のアイテムになります
2回目のパスはすべて2アイテム

list_one = ((1), (2), (3), (4), (5)) 

:(1、2)、等を含む組合せ
第3のパスは、(1,2)及び(3,4)、等

簡略化されたバージョンを含むすべての3つの項目の組み合わせを含みます希望出力:

((1), (2), (3), (4), (5), ((1), (2)), ((1), (3)), ((1), (4)), ((1), (5)), ((2), (3)), ((2), (4))... ((3), (4), (5))) 

どのように変更することがから移動している:
1 - > 2 - > 3 - > 4 - > 5
1,2] - > [1,3] - > [1,4 - > 1,5
...

+0

...私は私の希望の出力は、聞かせてハンドコード私は知っている。 – user58446

答えて

1

だけ[:i]を取り除く:

import itertools 

list_one = ((1, 2), (3, 4), (5, 6), (7, 8), (9, 10)) 
list_two = [] 
print "List One: " + str(list_one) 
for i in range(0, 5): 
    list_two = tuple(c for i in range(len(list_one)) 
        for c in itertools.combinations(list_one, i)) 
print "List Two: " + str(list_two) 

出力:組み合わせに欠陥があるので、もし

List One: ((1, 2), (3, 4), (5, 6), (7, 8), (9, 10)) 
List Two: ((), ((1, 2),), ((3, 4),), ((5, 6),), ((7, 8),), ((9, 10),), ((1, 2), (3, 4)), ((1, 2), (5, 6)), ((1, 2), (7, 8)), ((1, 2), (9, 10)), ((3, 4), (5, 6)), ((3, 4), (7, 8)), ((3, 4), (9, 10)), ((5, 6), (7, 8)), ((5, 6), (9, 10)), ((7, 8), (9, 10)), ((1, 2), (3, 4), (5, 6)), ((1, 2), (3, 4), (7, 8)), ((1, 2), (3, 4), (9, 10)), ((1, 2), (5, 6), (7, 8)), ((1, 2), (5, 6), (9, 10)), ((1, 2), (7, 8), (9, 10)), ((3, 4), (5, 6), (7, 8)), ((3, 4), (5, 6), (9, 10)), ((3, 4), (7, 8), (9, 10)), ((5, 6), (7, 8), (9, 10)), ((1, 2), (3, 4), (5, 6), (7, 8)), ((1, 2), (3, 4), (5, 6), (9, 10)), ((1, 2), (3, 4), (7, 8), (9, 10)), ((1, 2), (5, 6), (7, 8), (9, 10)), ((3, 4), (5, 6), (7, 8), (9, 10))) 
+0

ちょうどそれを考え出した。この質問にアップvvや答えがない場合、私はそれを削除したでしょう。しかし、あなたはまだあなたのおかげで答えを得るでしょう:)ありがとう。 – user58446