码迷,mamicode.com
首页 > 其他好文 > 详细

Lambda 表达式使用说明

时间:2018-02-12 21:03:17      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:back   value   mod   返回   关键字   recent   参考   map   就是   

Lambda 表达式

Lambda函数又称之为匿名函数,所谓匿名函数就是没有名字的函数。在我们日常的开发过程中,其实存在很多函数其实只是临时使用一次,或者这个函数的功能本身就非常的简单,例如就是做个加法或者交换下位置一类的,在这个时候,如果还是采用传统的方法去定义一个标准的函数,就显得多余了。

Lambda语法格式

语法格式:==lambda arguments: ==expression====

  • lambda: 函数关键字
  • arguments: 函数的参数列表,参数之间用,进行分割
  • expression:返回的表达式,且表达式只能有一个。

举例:
实现一个最常见的x*x的函数。

>>> square = lambda x:x*x
>>> square
<function <lambda> at 0x0000000002705B38>
>>> y = square(2)
>>> y
4

从上面的例子可以看到第一个x 是代表的参数,后面的x*x是函数的内容。

应用举例

这里讨论的filter函数和下面讨论的map函数并非lambda函数的一部分,是完全独立的,属于python的内建函数,详情可以参考

lambda 与filter函数联动

==filter(function,iterable)==
iterable 是迭代器,指向需要可能要返回的数据;function是过滤的条件,其返回值是true or false。当filter函数返回为真时,迭代函数返回对应的值。

>>> test = [1,2,3,4,5]
>>> ret = list(filter(lambda x:(x>2),x+5))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name ‘x‘ is not defined

>>> ret = list(filter(lambda x:(x>2),test))
>>> 
>>> ret
[3, 4, 5]
>>> 

我们先看上面代码中运行正常的这部分:先看filter函数:function是一个lambda 函数 lambda x:(x>2) 意思是参数值必须要大于2。根据前面的解释,如果function为真,那么迭代函数就返回对应的指向值,所以得到的数据是3,4,5。

看了正确的部分,我们再来看错误的部分:第一个错误的部分是迭代函数写成了x+5,想表达的意思是参数值x+5,但实际上这里的x 是需要指的传入的值,而不是参数值,因此报的错误也是非常的明显:x没有定义。

与map函数联合

==map(function,iterable,...)== 首先map 函数主要用于映射关系,其与filter一样,后面是迭代器。其返回值是一个map对象,需要转变为列表或者元祖才能查看其中的内容。如:

>>> list(map(lambda x: x*2,range(5)))
[0, 2, 4, 6, 8]
>>> range(5)
[0, 1, 2, 3, 4]

从上面的例子可以看出,map函数主要是将iterable中的值作为参数逐个传给function,经过函数执行以后,返回一个list结果。但需要注意的是刚才我们看到的函数是可以有多个参数的,如果在多个函数下结果又是如何了,其实是一样的。如下:

>>> list(map(lambda x,y:x+y,range(1,5),range(5,9)))
[6, 8, 10, 12]

Reduce函数

Reduce函数很多时候是和map函数合并用的,MR模型的经典就不具体描述了。将上面的map函数修改一下:

>>> reduce(lambda x,y:x+y,range(1,5))
10

可以看到reduce的结果就是一个结果整数了,而不是像map那样是一个List。
实际上reduce的函数形式如下:reduce(function,sequence,starting_value)。对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用.

参考文档:
http://blog.csdn.net/liang19890820/article/details/72846966

Lambda 表达式使用说明

标签:back   value   mod   返回   关键字   recent   参考   map   就是   

原文地址:https://www.cnblogs.com/angellst/p/8445414.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!