如何应用一个函数 n 次? [关闭]

2024-05-18

假设我有一个函数,它接受一个参数并返回相同类型的结果:

def increment(x):
    return x + 1

如何制作高阶函数repeat可以创建一个新函数,该函数将上述函数应用指定的次数?

例如,如果我打电话repeat(increment, 5)(x),我应该得到相同的结果increment(increment(increment(increment(increment(x))))).


好吧,有一种迭代方法:

def repeat(f, n):
    def new_fn(x):
        for _ in range(n):
            x = f(x)
        return x
    return new_fn

higher_fn = repeat(lambda x: x+3, 5)

higher_fn(2)    # => 17 == (((((2 + 3) + 3) + 3) + 3) + 3)

以及构图方法:

def repeat(f, n):
    new_fn_str = "lambda x: {}x{}".format("f(" * n, ")" * n)
    new_fn     = eval(new_fn_str, {"f": f})
    return new_fn

这会产生完全相同的结果,但可能会稍微快一些。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何应用一个函数 n 次? [关闭] 的相关文章

随机推荐