Python itertools.product()
采用昏迷分隔的1D列表并返回产品。我有一个表格中的数字除数列表
l=[[1, a1**1,a1**2,..a1**b1],[1,a2**1,..a2**b2],..[1, an**1, an**2,..an**bn]]
当我将它作为参数传递给itertools.product()时,我没有得到所需的结果。如何将此整数列表提供给product()?
import itertools
print([list(x) for x in itertools.product([1,2,4],[1,3])])
# [[1, 1], [1, 3], [2, 1], [2, 3], [4, 1], [4, 3]] #desired
l1=[1,2,4],[1,3] #doesn't work
print([list(x) for x in itertools.product(l1)])
#[[[1, 2, 4]], [[1, 3]]]
l2=[[1,2,4],[1,3]] #doesn't work
print([list(x) for x in itertools.product(l2)])
#[[[1, 2, 4]], [[1, 3]]]
答案 0 :(得分:3)
您需要在*l2
内使用product()
作为*
打开列表。在这种情况下,*[[1,2,4],[1,3]]
的值将为[1,2,4],[1,3]
。这是你的代码:
l2 = [[1,2,4],[1,3]]
print([list(x) for x in itertools.product(*l2)])
# Output: [[1, 1], [1, 3], [2, 1], [2, 3], [4, 1], [4, 3]]
请检查:What does asterisk mean in python。另请阅读有关*args
和**kwargs
的内容,您可能会发现它很有用。检查:*args and **kwargs in python explained