如何解决Python 中的多元 lambda 函数,随接收到的输入变量的数量而缩放
以下玩具函数通常采用两个输入变量:
f = lambda u1,u2 : (u1*u2)*(u1**2+u2**2)
但可以超出二元情况扩展到更高维度:
if dim == 2:
f = lambda u1,u2 : (u1*u2)*(u1**2+u2**2)
if dim == 3:
f = lambda u1,u2,u3 : (u1*u2*u3)*(u1**2+u2**2+u3**2)
if dim == 4:
f = lambda u1,u3,u4 : (u1*u2*u3*u4)*(u1**2+u2**2+u3**2+u4**2)
如何编写 lambda 函数以便它可以在调用 lambda u1,u4,...
中扩展自身以及函数体本身,基于发送给它的输入数量,类似于如何声明定义的函数作为 def f(*args)
其中 *args
是任意数量的输入参数?
解决方法
lambda
syntax 支持与 def
syntax 相同的参数列表语法,包括可变位置参数和关键字参数。
f = lambda *us: math.prod(us) * sum(u**2 for u in us)
如果 *us
在乘以 1
或添加到 0
时不是不变的,则可以通过 *
和 +
操作跨元素应用{3}}:
from functools import reduce
import operator
f = lambda *us: reduce(operator.mul,us) * reduce(operator.add,(u**2 for u in us))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。