【问题标题】:All possible combinations of a list with set of values列表与一组值的所有可能组合
【发布时间】: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

标签: algorithm math matrix


【解决方案1】:

你可以找到有多少组合:

Combinations = V ^ N
  • V是每个变量可以取值的个数
  • N 是变量的数量

假设所有变量都采用相同数量的可能值。

要获得完整列表,您必须遍历每个变量的每个值。您将拥有与变量值一样多的嵌套循环。

也许你可以为它实现一些递归函数。

【讨论】:

    猜你喜欢
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多