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

标签 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})

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

最佳答案

最简单的方法是 itertools.product() . 它允许您在一个简单的一行中创建您想要的内容:

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),不同的元素是 元组,而不是dicts

我目前不明白为什么你必须以类似字典的方式命名你的元素的确切原因,只要你知道元素存储在那里的顺序(这在 itertools.h 中是可预测的)。产品

关于python - 如何在python中创建多个变量的所有可能组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52034360/

相关文章:

python - 使用 xpath 语法解析带有 lxml.html 的 html 表单

以星号和双星号开头的 Python 方法/函数参数

python - 如何在Python中将1's and 0'的字符串以二进制形式保存到二进制文件中

Python TKinter 下拉菜单问题

Python 列表组合

arrays - 有效地计算紊乱(没有固定点的 n 个元素的排列数)

python - 给定长度的数组的所有组合

python - Django背景图片消失

python - Python 中 BeautifulSoup 中的 .find()

python - 警告消息指出找不到 '.credentials' 文件夹且 Safari 无法加载 'localhost'