python - Python 是否有像 Mathematica 这样的“嵌套”函数?
问题描述
Mathematica 有一个方便Nest
的重复计算函数f(f(f(f(...f(n)))))
。不是你每天都需要的东西,但偶尔有用。这是一个简单的实现:
def nest(f, expr, n):
assert n >= 0
if n == 0:
return expr
else:
return f(nest(f, expr, n - 1))
>>> nest(lambda x: (1 + x) ** 2, 1, 3)
676
有没有一种 Pythonic 的方法来做到这一点?
解决方案
也许如果你喜欢这些东西,你可以看看functools.reduce
:
from functools import reduce
def nest(f, expr, n):
return reduce(lambda x, _: f(x), range(n), expr)
>>> nest(lambda x: (1 + x) ** 2, 1, 3)
676
推荐阅读
- html - CSS 背景不合适/被切断
- typescript - 不带参数的高阶函数的编译行为
- amazon-web-services - SQS 是否返回所有带有以下代码的消息?
- jcommander - 如何用 arity 0 或 1 定义参数
- xforms - 错误报告 XSLTForms 范围控制?
- python - 如何以pythonic方式重写此代码?
- java - 使用 office365 帐户的 Java 邮件
- google-app-engine - 如何在 GAE 上配置端口转发到 docker 容器
- javascript - 在 TimelineMax 动画中的链接上添加 event.preventDefault()
- excel - 约会邀请不会发送VBA