如何在Python中返回/接收多个参数?

如何在Python中返回/接收多个参数?,python,list,iterable,Python,List,Iterable,我试图返回给定整数的所有可能的因式分解的集合 我的做法如下。整数可以写成素数的乘积,每一个素数都有一定的幂。我有一个函数,它创建了一个包含素数幂的列表 例如:1400=2^3*5^2*7。所以我有一个函数,它产生 K = [[[2, 2, 2], [4, 2], [8]], [[5, 5], [25]], [[7]]] 这是一个包含三个元素的列表。然后,我可以通过 product([[2, 2, 2], [4, 2], [8]], [[5, 5], [25]], [[7]]) Out: [([

我试图返回给定整数的所有可能的因式分解的集合

我的做法如下。整数可以写成素数的乘积,每一个素数都有一定的幂。我有一个函数,它创建了一个包含素数幂的列表

例如:1400=2^3*5^2*7。所以我有一个函数,它产生

K = [[[2, 2, 2], [4, 2], [8]], [[5, 5], [25]], [[7]]]
这是一个包含三个元素的列表。然后,我可以通过

product([[2, 2, 2], [4, 2], [8]], [[5, 5], [25]], [[7]])
Out:
[([2, 2, 2], [5, 5], [7]),
 ([2, 2, 2], [25], [7]),
 ([4, 2], [5, 5], [7]),
 ([4, 2], [25], [7]),
 ([8], [5, 5], [7]),
 ([8], [25], [7])]
其中,
product
是从itertools调用的

问题是,我想要的是为列表
K
中的
product
元素提供信息(就好像用户已经为函数产品编写了3个参数一样)。但我似乎无法创建一个能够在一般情况下做到这一点的函数。一般来说,我不知道需要输入多少参数
product
。这能做到吗?我确信我可以找到一种不那么奇怪的方法来实现这一点,但现在我很好奇这是否可以实现,如果不能,原因是什么。

您可以使用“星形”语法来接受函数的可变数量的参数

def foo(*args):
    # args is a tuple containing all arguments passed to foo
    print(len(args))
现在,您可以将任意多个参数传递给
foo

foo(1, 2, 3)  # prints 3
foo(1, 2, 3, 4, 5, 6)  # prints 6
试试这个:

factors = [[2, 2, 2], [4, 2], [8]], [[5, 5], [25]], [[7]]
print(list(product(*factors)))

阅读。

itertools.product(*K)
这就是它!非常感谢。