Python 中的lambda表达式

Python允许用lambda关键字创造匿名函数。匿名是因为不需要以标准的方式来声明。然而,作为函数,它们也能有参数。一个完整的lambda“语句”代表了一个表达式,这个表达式的定义体必须和声明放在同一行。

用合适的表达式调用一个lambda生成一个可以像其他函数一样使用的函数对象。它们可被传给其他函数,用额外的引用别名化,作为容器对象以及作为可调用的对象被调用。当被调用的时候,如果给定相同的参数的话,这些对象会生成一个和相同表达式等价的结果。它们和那些返回等价表达式计算值相同的函数是不能区分的。

def add2(x,y=2):return x+y  等价于 lambda x,y=2:x+y

除了lambda表达式之外,python还支持将函数作为参数传递给另外一个函数.python语言内建的函数apply,filter,map,reduce就可以接受函数参数。

apply函数逐步被淘汰,不做介绍。

filter(function, sequence)会遍历sequence中的每一个item,并以该item为参数调用function,如果function返回ture,就将该item加到结果sequence中,这就达到过滤sequence的效果,作为参数的function就是过滤的条件,举例:

>>> a=range(1,10)
>>> filter(lambda(n):n%2==0,a)
[2, 4, 6, 8]

map(function, sequence)也是遍历sequence中的每一个item,并以该item为参数调用function,然后将执行结果添加到最终的结果sequence中,举例:

>>> b=range(1,10)
>>> map(lambda(n):n**2,b)
[1, 4, 9, 16, 25, 36, 49, 64, 81]

reduce(function, sequence)先把sequence中的头两个item作为参数传给function,将function的运行结果跟第三个item作为参数再次传给function,直至遍历完sequence,最后把单个值返回,举例:

>>> def add(x,y):
return x+y

>>> reduce(add,range(1,10))
45
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容