【问题标题】:How to generate all possible combinations of N slots with V possible values? [duplicate]如何生成具有 V 个可能值的 N 个插槽的所有可能组合? [复制]
【发布时间】:2018-07-06 03:04:53
【问题描述】:

我有 N 个有序插槽。每个槽都有一个 V 个可能值中的值

N = 4 # number of objects (e.g. slots)
possible_values = ['A','B']
V = len(possible_values )

如何在 Python 中生成所有可能组合的列表?例如,当 V=2 和 N=4 时,我想得到以下 2**4 种不同组合的列表:

combinations = [
    [ 'A', 'A', 'A', 'A' ], # combination 0
    [ 'A', 'A', 'A', 'B' ], # combination 1
    [ 'A', 'A', 'B', 'A' ], # combination 2
    [ 'A', 'A', 'B', 'B' ], # combination 3
    [ 'A', 'B', 'A', 'A' ], # combination 4
    [ 'A', 'B', 'A', 'B' ], # combination 5
    [ 'A', 'B', 'B', 'A' ], # combination 6
    [ 'A', 'B', 'B', 'B' ], # combination 7
    [ 'B', 'A', 'A', 'A' ], # combination 8
    [ 'B', 'A', 'A', 'B' ], # combination 9
    [ 'B', 'A', 'B', 'A' ], # combination 10
    [ 'B', 'A', 'B', 'B' ], # combination 11
    [ 'B', 'B', 'A', 'A' ], # combination 12
    [ 'B', 'B', 'A', 'B' ], # combination 13
    [ 'B', 'B', 'B', 'A' ], # combination 14
    [ 'B', 'B', 'B', 'B' ], # combination 15
]

我希望代码在 N 和 V 变化时工作。例如,当 N=9 个槽位和 V=4 个可能值时,我希望得到 4**9=262144 个可能组合的列表。

【问题讨论】:

  • 您已使用 numpyarrays 标记此内容,但您使用的是列表列表。你想要哪个答案?
  • help(itertools.product)
  • 如果您想处理任意 Python 迭代,请查看 itertools。如果您想处理 NumPy 数组,请查看 scipy。无论哪种方式,您几乎都不会花时间找到答案。
  • 但是你离开了 NumPy,所以它仍然不清楚。你想要一个通用的可迭代解决方案,还是一个 NumPy 数组解决方案?
  • 这与强化学习有什么关系?

标签: python base


【解决方案1】:
N = 4 # number of objects (e.g. slots)
possible_values = ['A','B']

result = itertools.product(possible_values, repeat=N)

print(list(result))

【讨论】:

  • 不确定为什么会被否决,它提供了问题的答案。补偿!我会建议,如果您投票反对留下反馈,否则很难改进。
  • 投反对票的一个可能原因是它是没有任何解释或讨论的裸代码。
  • 这里不是反对票,但我在回答明显重复之前多次反对你。这里也可能是这种情况。
  • 应该在回答问题之前关闭问题如果它们重复
  • 杜比关闭有帮助。
猜你喜欢
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
相关资源
最近更新 更多