我的 itertools 产品方法不起作用?为什么?

My itertools product method is not working? Why?

我正在使用 itertools 产品并尝试 return 可能的排列。 这就是我要传递的内容:

from itertools import product

df = {'A':[0,0.03,0.5],
     'B':[0,0.02,0.5],
     'C':[0,0.015,0.03],
     'D':[0,0.15,0.3],
     'E':[0,0.1,0.4],
     'F':[0,0.06,0.5],
     'G':[0,0.07,0.5]}

for element in product(list(df.values())):
   print(element)

我得到的结果:

([0, 0.03, 0.5],)
([0, 0.02, 0.5],)
([0, 0.015, 0.03],)
([0, 0.15, 0.3],)
([0, 0.1, 0.4],)
([0, 0.06, 0.5],)
([0, 0.07, 0.5],)

我想要的: 所有可能的数字排列,一种可能的解决方案如下:

[0,0.02,0.015,0.15,0.4,0.06,0.07]

为什么乘积方法没有按预期工作。使用 Jupyter Notebooks - Python 3.

你在找这个吗?

from itertools import product

df = {'A':[0,0.03,0.5],
     'B':[0,0.02,0.5],
     'C':[0,0.015,0.03],
     'D':[0,0.15,0.3],
     'E':[0,0.1,0.4],
     'F':[0,0.06,0.5],
     'G':[0,0.07,0.5]}
for element in product(*df.values()):
   print(element)

示例输出:

...
(0.5, 0.5, 0.03, 0.3, 0.1, 0.5, 0)
(0.5, 0.5, 0.03, 0.3, 0.1, 0.5, 0.07)
(0.5, 0.5, 0.03, 0.3, 0.1, 0.5, 0.5)
(0.5, 0.5, 0.03, 0.3, 0.4, 0, 0)
(0.5, 0.5, 0.03, 0.3, 0.4, 0, 0.07)
(0.5, 0.5, 0.03, 0.3, 0.4, 0, 0.5)
(0.5, 0.5, 0.03, 0.3, 0.4, 0.06, 0)
(0.5, 0.5, 0.03, 0.3, 0.4, 0.06, 0.07)
(0.5, 0.5, 0.03, 0.3, 0.4, 0.06, 0.5)
(0.5, 0.5, 0.03, 0.3, 0.4, 0.5, 0)
(0.5, 0.5, 0.03, 0.3, 0.4, 0.5, 0.07)
(0.5, 0.5, 0.03, 0.3, 0.4, 0.5, 0.5)

您需要将列表展平如下:

for element in product([item for data in df.values() for item in data)):
   print(element)