将列表转换为参数元组

时间:2016-09-20 23:53:07

标签: python list arguments

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]]]

1 个答案:

答案 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