【发布时间】:2022-01-01 10:44:27
【问题描述】:
我有三个“字段”
V0、V1 和 V2
每个字段可以是 0、1 或 2。
V0:允许值 [0, 1, 2]
V1:允许的值 [0, 1, 2]
V2:允许的值 [0, 1, 2]
因此,为了生成 [V0, V1, V2] 的每个唯一列表,我应该看到如下列表:
[0,0,0], [0,0,1], [0,0,2], [0, 1, 0], [0, 2, 0], [1, 0, 0] , [2, 0,0], [0, 1, 1] 等
找到每一个唯一的列表。
有没有一种数学方法来计算可能有多少种潜在组合?这在某种程度上让我想起了真值表,但输入 (0,1) 上可以有两个以上的状态。
我可以使用一种众所周知的算法来实现可以创建这些列表的代码吗?而不是试图重新发明轮子!
【问题讨论】:
-
这称为cartesian product。数字是组合只是允许值数量的乘积,所以
3*3*3 = 27。 -
实现计算笛卡尔积的算法可能涉及递归。使用生成此类列表的内置/库函数将需要检查您选择的语言的文档。例如,Python 有itertools.product