我现在脑子里有个错误。
我有很多变量,每个变量可以处于两种状态。我想将它们组合成一个数组,为此,我选择了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'],)
那是怎么发生的?而我该如何解决呢?
答案 0 :(得分:1)
itertools.product
接受可变数量的参数,而不是参数列表。因此,只需在列表前面放一个*
即可打开列表
itertools.product(*[dict[i] for i in range(1,4)])