【发布时间】: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 个可能组合的列表。
【问题讨论】:
-
您已使用
numpy和arrays标记此内容,但您使用的是列表列表。你想要哪个答案? -
help(itertools.product) -
但是你离开了 NumPy,所以它仍然不清楚。你想要一个通用的可迭代解决方案,还是一个 NumPy 数组解决方案?
-
这与强化学习有什么关系?