Python-itertools.product()

时间:2018-08-13 18:21:27

标签: python for-loop

我现在脑子里有个错误。

我有很多变量,每个变量可以处于两种状态。我想将它们组合成一个数组,为此,我选择了itertools.product。

所以基本上我需要的是类似的东西

a = ["A", "a"]
b = ["B", "b"]
c = ["C", "c"]
...
result = list(itertools.product(a,b,c,...)

如果我用手写A,B,C,效果很好,但是写那么多会很烦人。 到目前为止,我的方法是将状态存储在循环更新的字典中:

dict = {1: ["A","a"], 2: ["B","b"], ..., 300: ["XYZ", "xyz"]}

现在我要合并它

result = list(itertools.product([dict[i] for i in range(1,4)]))

现在我希望类似

("A","B","C"),("A","B","c"),("A","b","C"),...,("a","b","c")

但是我得到了

(['A', 'a'],), (['B', 'b'],), (['C', 'c'],)

那是怎么发生的?而我该如何解决呢?

1 个答案:

答案 0 :(得分:1)

itertools.product接受可变数量的参数,而不是参数列表。因此,只需在列表前面放一个*即可打开列表

itertools.product(*[dict[i] for i in range(1,4)])
相关问题