如何在python中创建多个变量的所有可能组合

时间:2018-08-27 07:17:03

标签: python python-3.x combinations

我有任意数量的变量,每个变量可以取任意数量的有效值。例如。 a-(a1,a2,a3),b-(b1,b2),c-(c1,c2,c3,c4,c5)。现在我想要下面的字典列表

[
{a:a1,b:b1,c:c1},
{a:a1,b:b1,c:c2},
{a:a1,b:b1,c:c3},
.
.
.
{a:a3,b:b2,c:c3}
]

在上述情况下,总共3 * 2 * 5 = 30种组合。如何在python中创建它们。

对于每个变量,我可能会有三个for循环,如下所示

result_list = list()
for a_val in [a1,a2,a3]:
    for b_val in [b1,b2]:
        for c_val in [c1,c2,c3,c4,c5]:
            result_list.append({a:a_val,b:b_val,c:c_val})

但是变量的数量也有所不同。而不是3个变量,我想同时应用5个变量(a,b,c,d,e),依此类推。如何使用通用代码在python中实现

1 个答案:

答案 0 :(得分:3)

最简单的方法是[itertools.product()][1]。 它使您可以用简单的一线式创建想要的东西:

import itertools
a = [1,2,3]
b = [4,5]
c = [-1]
# result contains all possible combinations.
combinations = list(itertools.product(a,b,c))

请注意,生成的combinations变量本身是list(可以转换为set),并且不同的元素是tuples,而不是{{1} }。

我目前尚不清楚为什么您必须以类似dict的方式命名元素的确切原因,只要您知道元素在此处的存储顺序即可({{1}中可预测