2013-03-15 31 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