假设我有一个函数,它接受一个参数并返回相同类型的结果:
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(使用前将#替换为@)