Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Lambda用法_Python_Lambda - Fatal编程技术网

Python 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):

我正在努力学习如何使用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):
    return lambda x:f(g(x))

提前感谢您的解释。

重复
也需要返回callable
compose()
可以为您生成可调用的代码,但您需要多次应用它:

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