我在用itertools.product我不擅长用例子来解释,所以这里的代码是原样的。在
group1=[1,2,3];group2=[4,5,6];group3=[7,8,9]
list(itertools.product(group1,group2,group3))
这给了我每组1的所有组合。但是我该如何从第1组中得到2个数字的组合,从第2组中得到2个数字,从第3组中得到1个数字的组合呢?在
例如,我希望组合(1,2,5,6,9)出现在列表中。可以定制这个吗?itertools.product似乎没有我所需要的那样灵活,而且我在学习笛卡尔积的过程中也不成功,足以理解如何调整.product函数。在
编辑:为了简单起见,我将组缩小,但是每个组都有数百个唯一的值。在
取每组r-组合的笛卡尔积:
输出:
^{pr2}$如果从每个组中选择时顺序很重要(例如,如果}。在
(3, 2, 5, 6, 9)
与(2, 3, 5, 6, 9)
不同),可以将combinations
更改为{您应该注意,这会从
N
组中生成choose(|g1|, c1) * choose(|g2|, c2) * ... * choose(|gN|, cN)
元素,其中choose(n, k)
是{a1}。如果你的团队规模如你所说的数百个,或者如果团队的数量也很大,那么这个数字是无法估量的。在相关问题 更多 >
编程相关推荐