8

我正在编写一个小脚本,我在其中调用 itertools.product,如下所示:

for p in  product(list1,list2,list3):
            self.createFile(p)

有没有办法让我在事先不知道要包含多少个列表的情况下调用这个函数?

谢谢

4

2 回答 2

20

您可以使用 star 或 splat 运算符(它有几个名称): for p in product(*lists)wherelists是要传递的元组或列表。

def func(a,b):
    print (a,b)

args=(1,2)
func(*args)

在定义一个函数以允许它接受可变数量的参数时,您可以做类似的事情:

def func2(*args): #unpacking
   print(args)  #args is a tuple

func2(1,2)  #prints (1, 2)

当然,您可以将 splat 运算符与可变数量的参数结合使用:

args = (1,2,3)
func2(*args) #prints (1, 2, 3)
于 2012-08-15T16:17:30.067 回答
4

使用 splat operator( *) 传递和收集未知数量的参数位置参数。

def func(*args):
   pass

lis = [1,2,3,4,5]
func(*lis)
于 2012-08-15T16:17:57.517 回答