[英]Combinations with repetitions
使用itertools.combinations
(或任何其他功能),我想知道满足以下要求可以完成多少组合:
5, 6, 7, 8
。所以每个数组是:
A = ['A', 'A', 'A', 'A', 'A']
B = ['B', 'B', 'B', 'B', 'B', 'B']
C = ['C', 'C', 'C', 'C', 'C', 'C', 'C']
D = ['D', 'D', 'D', 'D', 'D', 'D', 'D', 'D']
例如,组合将是:( ('A', 'A', 'A', 'A', 'A')
或('A', 'D', 'D', 'B', 'C')
。 订单无关紧要。 我怎么能那样做?
将四个列表全部添加到一个列表中,然后将参数设置为combinations
function。您也可以将所有列表添加到combination
function中。
from itertools import combinations
A = ['A', 'A', 'A', 'A', 'A']
B = ['B', 'B', 'B', 'B', 'B', 'B']
C = ['C', 'C', 'C', 'C', 'C', 'C', 'C']
D = ['D', 'D', 'D', 'D', 'D', 'D', 'D', 'D']
comb = combinations(A+B+C+D, 5)
for c in comb:
print(c)
既然你提到顺序无关紧要,我认为对于你的例子,正确答案应该只产生56
种组合。
你可以使用这个:
from itertools import combinations_with_replacement
combi = list(combinations_with_replacement(set(A+B+C+D), 5))
对于您的示例,使用此解决方案, print(len(combi))
和print(combi)
产生以下输出:
56
[('C', 'C', 'C', 'C', 'C'),
('C', 'C', 'C', 'C', 'A'),
('C', 'C', 'C', 'C', 'B'),
('C', 'C', 'C', 'C', 'D'),
('C', 'C', 'C', 'A', 'A'),
('C', 'C', 'C', 'A', 'B'),
('C', 'C', 'C', 'A', 'D'),
('C', 'C', 'C', 'B', 'B'),
('C', 'C', 'C', 'B', 'D'),
('C', 'C', 'C', 'D', 'D'),
('C', 'C', 'A', 'A', 'A'),
('C', 'C', 'A', 'A', 'B'),
('C', 'C', 'A', 'A', 'D'),
('C', 'C', 'A', 'B', 'B'),
('C', 'C', 'A', 'B', 'D'),
('C', 'C', 'A', 'D', 'D'),
('C', 'C', 'B', 'B', 'B'),
('C', 'C', 'B', 'B', 'D'),
('C', 'C', 'B', 'D', 'D'),
('C', 'C', 'D', 'D', 'D'),
('C', 'A', 'A', 'A', 'A'),
('C', 'A', 'A', 'A', 'B'),
('C', 'A', 'A', 'A', 'D'),
('C', 'A', 'A', 'B', 'B'),
('C', 'A', 'A', 'B', 'D'),
('C', 'A', 'A', 'D', 'D'),
('C', 'A', 'B', 'B', 'B'),
('C', 'A', 'B', 'B', 'D'),
('C', 'A', 'B', 'D', 'D'),
('C', 'A', 'D', 'D', 'D'),
('C', 'B', 'B', 'B', 'B'),
('C', 'B', 'B', 'B', 'D'),
('C', 'B', 'B', 'D', 'D'),
('C', 'B', 'D', 'D', 'D'),
('C', 'D', 'D', 'D', 'D'),
('A', 'A', 'A', 'A', 'A'),
('A', 'A', 'A', 'A', 'B'),
('A', 'A', 'A', 'A', 'D'),
('A', 'A', 'A', 'B', 'B'),
('A', 'A', 'A', 'B', 'D'),
('A', 'A', 'A', 'D', 'D'),
('A', 'A', 'B', 'B', 'B'),
('A', 'A', 'B', 'B', 'D'),
('A', 'A', 'B', 'D', 'D'),
('A', 'A', 'D', 'D', 'D'),
('A', 'B', 'B', 'B', 'B'),
('A', 'B', 'B', 'B', 'D'),
('A', 'B', 'B', 'D', 'D'),
('A', 'B', 'D', 'D', 'D'),
('A', 'D', 'D', 'D', 'D'),
('B', 'B', 'B', 'B', 'B'),
('B', 'B', 'B', 'B', 'D'),
('B', 'B', 'B', 'D', 'D'),
('B', 'B', 'D', 'D', 'D'),
('B', 'D', 'D', 'D', 'D'),
('D', 'D', 'D', 'D', 'D')]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.