我有一定数量的变量,每个变量都能达到某些值,我需要计算这些变量的所有可能方式。例如,如果我有 -
variable_values = [[0], [0, 1], [0, 1, 2], [1, 2]]
即。变量1可以是0
;变量2可以是0
或1
;变量3可以是0
,1
或2
;变量4可以是1
或2
。
因此,所有可能的值集都是 -
possible_value_sets = [
[0, 0, 0, 1],
[0, 0, 1, 1],
[0, 0, 2, 1],
[0, 1, 0, 1],
[0, 1, 1, 1],
[0, 1, 2, 1],
[0, 0, 0, 2],
[0, 0, 1, 2],
[0, 0, 2, 2],
[0, 1, 0, 2],
[0, 1, 1, 2],
[0, 1, 2, 2],
]
在python中计算所有可能值集的最佳方法是什么?
答案 0 :(得分:5)
您可以使用itertools.product
:
>>> variable_values = [[0], [0, 1], [0, 1, 2], [1, 2]]
>>> import itertools
>>> list(itertools.product(*variable_values))
[(0, 0, 0, 1), (0, 0, 0, 2), (0, 0, 1, 1), (0, 0, 1, 2), (0, 0, 2, 1),
(0, 0, 2, 2), (0, 1, 0, 1), (0, 1, 0, 2), (0, 1, 1, 1), (0, 1, 1, 2),
(0, 1, 2, 1), (0, 1, 2, 2)]
答案 1 :(得分:2)
from itertools import product,combinations
print [list(x) for x in (product(*variable_values))]
[[0, 0, 0, 1], [0, 0, 0, 2], [0, 0, 1, 1], [0, 0, 1, 2], [0, 0, 2, 1], [0, 0, 2, 2], [0, 1, 0, 1], [0, 1, 0, 2], [0, 1, 1, 1], [0, 1, 1, 2], [0, 1, 2, 1], [0, 1, 2, 2]]