Skip to main content
 首页 » 编程设计

python之是否可以在 Python 中反转任意 lambda

2025年05月04日20tintown

我最近一直在玩 Python 和数学,遇到了一些我还没有弄清楚的事情。也就是说,给定一个任意的 lambda,是否有可能为数学运算返回该 lambda 的倒数?也就是说,invertLambda 使得 invertLambda(lambda x:(x+2))(2) = 0。lambda 仅限于表达式这一事实给了我希望,但到目前为止我还无法让它发挥作用。我知道任何结果都会有丢失信息的功能问题,但如果必须的话,我愿意将用户和我自己限制在无损功能上。

请您参考如下方法:

当然不是:如果 lambda 不是 injective function ,你不能反转它。示例:您不能将 lambda 映射 x 反转为 x*x,因为原始 x 的符号丢失了。

撇开单射性不谈,有些函数的求逆在计算上非常复杂。例如,考虑从其 md5 散列中恢复原始值。 (对于计算 md5 散列的 lambda,反转函数必须在密码学意义上破解 md5!)


编辑:
事实上,如果我们限制可以在那里使用的表达式,理论上我们可以使 lambdas 可逆。例如,如果 lambda 是一个参数为 1 的线性函数,我们可以很容易地反转它。如果它是次数 > 4 的多项式,则代数精确解有问题。

当然,我们可以避免精确解,而只是数值反转函数。这是可能的,使用 numerical solving 的任何方法等式 lambda(x) = value 就可以了(最简单的是二分查找)。