2024-04-26 21:10:35 发布
网友
我知道如何返回在一个由20个可能的球组成的罐子中挑选3个球的所有可能组合的列表:
list(itertools.combinations(range(1,21),3))
但是如果我有两个罐子里的两个球(首先我会在一个装有5个球的罐子里挑一个球,然后在另一个罐子里再做一次),我怎么能得到所有组合的可能列表呢?你知道吗
假设第一个罐子里的球编号为1到20,第二个罐子里的球编号为31到35,第三个罐子里的球编号为41到45,所以我们可以保持球和罐子笔直。然后将itertools.combinations函数与itertools.product组合,得到所有可能性的列表:
1
20
31
35
41
45
itertools.combinations
itertools.product
list(product(combinations(range(1,21),3), range(31,36), range(41,46)))
这将是一个长长的清单,有28500个项目。列表中的第一项是
((1, 2, 3), 31, 41)
意思是球1,2,3来自第一个罐子,球31来自第二个罐子,球41来自第三个罐子。最后一项是
1,2,3
((18, 19, 20), 35, 45)
意思很明显。如果您只想要一个由5个数字组成的元组,而不需要任何内部元组,例如(1, 2, 3, 31, 41),您可以用多种方式“展平”元组,例如
(1, 2, 3, 31, 41)
[(*v[0], *v[-2:]) for v in product(combinations(range(1,21),3), range(31,36), range(41,46))]
假设第一个罐子里的球编号为
1
到20
,第二个罐子里的球编号为31
到35
,第三个罐子里的球编号为41
到45
,所以我们可以保持球和罐子笔直。然后将itertools.combinations
函数与itertools.product
组合,得到所有可能性的列表:这将是一个长长的清单,有28500个项目。列表中的第一项是
意思是球
1,2,3
来自第一个罐子,球31
来自第二个罐子,球41
来自第三个罐子。最后一项是意思很明显。如果您只想要一个由5个数字组成的元组,而不需要任何内部元组,例如
(1, 2, 3, 31, 41)
,您可以用多种方式“展平”元组,例如相关问题 更多 >
编程相关推荐