python - 如何在 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
。这可以做到吗?我确信我可以找到一种不那么奇怪的方法来做到这一点,但现在我很好奇这是否可以做到,如果不能,为什么。
解决方案
您可以使用“星形”语法来接受函数的可变数量的参数
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
推荐阅读
- html - "-" 登录 svg 路径
- google-app-engine - 自动将 Github 提交到 Google AppEngine 版本
- wordpress - Woocommerce 中的邮政编码
- android - URI 不适用于小米/华为
- dynamics-ax-2012 - 如何使用 X++ 从 Dynamics AX 查询实体?
- java - 提高 Spring boot JpaRepostiory on Save 的性能
- java - 未能使用 maven-surfire-plugin 和测试执行目标 org.apache.maven.plugins:maven-surefire-plugin:2.21.0:test
- sapui5 - 如何在 SAP Visual Business GeoMap 中更改 HERE 地图类型?
- vba - 在循环中粘贴 Excel 公式
- dart - 为什么 Flutter State 对象需要一个 Widget?