计算可以分配某些变量的所有方式的最佳方法

时间:2014-08-24 13:46:12

标签: python list combinations

我有一定数量的变量,每个变量都能达到某些值,我需要计算这些变量的所有可能方式。例如,如果我有 -

variable_values = [[0], [0, 1], [0, 1, 2], [1, 2]]

即。变量1可以是0;变量2可以是01;变量3可以是012;变量4可以是12

因此,所有可能的值集都是 -

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中计算所有可能值集的最佳方法是什么?

2 个答案:

答案 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]]