首页 > 解决方案 > 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 的方法来做到这一点?

标签: pythonfunctionrecursionfunctional-programmingwolfram-mathematica

解决方案


也许如果你喜欢这些东西,你可以看看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

推荐阅读