Python Lambda用法
我正在努力学习如何使用lambda函数,我遇到了一些困难 来自家庭作业的例子 我有以下功能Python Lambda用法,python,lambda,Python,Lambda,我正在努力学习如何使用lambda函数,我遇到了一些困难 来自家庭作业的例子 我有以下功能 def square(x): return x**2 def incr(x): return x+1 我需要创建一个名为“repeated”的函数,该函数将接受上述函数之一+一个整数,并将根据函数被调用的时间返回一些值,即: repeated (incr,4)(2) 6 repeated (square,2)(5) 625 使用“编写”函数 def compose(f,g):
def square(x):
return x**2
def incr(x):
return x+1
我需要创建一个名为“repeated”的函数,该函数将接受上述函数之一+一个整数,并将根据函数被调用的时间返回一些值,即:
repeated (incr,4)(2)
6
repeated (square,2)(5)
625
使用“编写”函数
def compose(f,g):
return lambda x:f(g(x))
提前感谢您的解释。
重复
也需要返回callablecompose()
可以为您生成可调用的代码,但您需要多次应用它:
def repeated(f, count):
callable = f
for _ in range(count - 1):
callable = compose(f, callable)
return callable
因此,如果
count
为1
,则返回原始的f()
。对于count=2
,将返回f(f())
,等等。如果应该使用lambda
,则可以使用如下递归:
def repeated(func, times):
return lambda x: repeated(func, times - 1)(func(x)) if times > 0 else x
重复返回的是一个函数,它等待一个参数,x
,然后在x
当它不应该再激活自己时(换句话说,你尝试过递归的次数?你被介绍过
reduce()
吗?不,我没有尝试过递归,也不,我不完全熟悉reduce())函数我相信我们应该在接下来的几节课中了解它。我想老师希望我们用一个lambda函数提供一个答案,这个函数将函数作为一个带整数的参数。只有一件事,为什么我需要将f保存在一个不同的变量中?因为每次迭代都需要访问未更改的函数。你不想包装函数堆栈本身是可调用的。
def repeated(func, times):
return compose(func, repeated(func, times-1)) if times > 0 else lambda x