2013-03-15 61 views
0

我一直在困惑幾個小時如何爲這個問題制定一個方案。我尋找類似的解決方案,但我沒有成功。python的計數組合

中有6臺2個值a [a1,a2] ; b [b1, b2] ; ... f [f1, f2].

每個組合都需要有從每一個組的至少一個值的,但它可以具有也兩者。因此,有64種組合。

我需要的是計算所有這些組合,並打印這樣的:

Combination 1: a1, b1, c1, d1, e1, f1 Sum: (sum of those listed) 

Combination 2: ... 

Total sum: 
+0

「每個組合都需要每組至少有一個值,但它也可以同時具有這兩個值。」 - >對我來說,結果是3^6 = 729個組合。 Lenghts從6到12個元素不等。 – Ber 2013-03-15 14:30:14

+0

你說得對,那是我需要的。謝謝你的評論 – user2172096 2013-03-15 18:25:33

回答

2
>>> from itertools import product 
>>> for item in product(['a1', 'a2'], ['b1', 'b2'], ['c1', 'c2']): 
...  print item 
...  
('a1', 'b1', 'c1') 
('a1', 'b1', 'c2') 
('a1', 'b2', 'c1') 
('a1', 'b2', 'c2') 
('a2', 'b1', 'c1') 
('a2', 'b1', 'c2') 
('a2', 'b2', 'c1') 
('a2', 'b2', 'c2') 

它看起來像你的A1,A2等都是數字。那也沒關係

>>> from itertools import product 
>>> for item in product([1, 2], [3, 4], [5, 6]): 
...  print item, sum(item) 
... 
(1, 3, 5) 9 
(1, 3, 6) 10 
(1, 4, 5) 10 
(1, 4, 6) 11 
(2, 3, 5) 10 
(2, 3, 6) 11 
(2, 4, 5) 11 
(2, 4, 6) 12 
+0

謝謝。這是做我想做的事情,但並沒有解決我的問題:(看來我需要更多的組合來計算這個,因爲有可能性,這兩個值都選擇了 例如:組合1:a1,b1,c1,d1, e1,f1和comb2:a1,a2,b1,b2,c1,c2,d1,d2,e1,e2,f1,f2或可能的任意組合,因此它可以是6個值,7,8 ...直到12但條件是它必須至少包含6個集合中的每一個。對不起,我解釋得很差 – user2172096 2013-03-15 12:18:27

+0

顯然有更多的組合涉及 – user2172096 2013-03-15 12:25:41

+0

@ user2172096,當然我只是把3對,你可以擴展到6對沒有其他變化 – 2013-03-15 13:22:36