首页 > 解决方案 > 如何在 Python 中返回/接收多个参数?

问题描述

我正在尝试返回给定整数的所有可能分解的集合。

我接近这个的方式如下。整数可以写成素数的乘积,每个素数的幂。我有一个函数,它创建一个包含素数列表的列表。

例如: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 调用where 。

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

标签: pythonlistiterable

解决方案


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

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

推荐阅读