目录:
一、lambda表达式
二、介绍两个BIF:filter()和map()
三、课时21课后习题及答案
*********************
一、lambda表达式
*********************
Python允许使用lambda关键字来创建匿名函数。
先来定义一个普通的函数:
>>> def ds(x): return 2 * x + 1 >>> ds(5) 11
如果使用lambda语句来定义这个函数,就会变成这样:
>>> lambda x : 2 * x + 1 <function <lambda> at 0x00000172968578C8>
Python的lambda表达式语法非常精简,基本语法是在冒号(:)左边放原函数的参数,可以有多个参数,用逗号(,)隔开即可;冒号右边是返回值。在上面的例子中我们发现lambda语句实际上是返回一个函数对象,如果要对它进行使用,只需要进行简单的操作即可:
>>> g=lambda x : 2 * x + 1 >>> g(5) 11
下面演示lambda表达式两个参数的例子:
>>> def add(x,y):
return x + y
>>> add(3,4)
7
>>> g = lambda x , y : x + y
>>> g(3,4)
7
lambda表达式的作用:
(1)Python写一些执行脚本时,使用lambda就可以省下定义函数过程,比如说我们只是需要写个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数然后再写调用,使用lambda就可以使得代码更加精简。
(2)对于一些比较抽象并且整个程序执行下来只需要调用一两次的函数,有时候给函数起个名字也是比较头疼的问题,使用lambda就不需要考虑命名的问题了。
(3)简化代码的可读性,由于普通的屌丝函数阅读经常要跳到开头def定义部分,使用lambda函数可以省去这样的步骤。
*******************************************
二、介绍两个BIF:filter()和map()
*******************************************
1、filter()
我们研究的第一个内建函数是一个过滤器。我们每天会接触到大量的数据,过滤器的作用就显得非常重要了,通过过滤器,就可以保存你所关注的信息,把其它不感兴趣的东西直接丢掉。那Python如何来实现过滤功能呢?先来看看Python自己的注释:
>>> help(filter) Help on class filter in module builtins: class filter(object) | filter(function or None, iterable) --> filter object | | Return an iterator yielding those items of iterable for which function(item) | is true. If function is None, return the items that are true. | | Methods defined here: | | __getattribute__(self, name, /) | Return getattr(self, name). | | __iter__(self, /) | Implement iter(self). | | __next__(self, /) | Implement next(self). | | __reduce__(...) | Return state information for pickling. | | ---------------------------------------------------------------------- | Static methods defined here: | | __new__(*args, **kwargs) from builtins.type | Create and return a new object. See help(type) for accurate signature.
大概意思是:filter有两个参数。第一个参数可以是一个函数也可以是None,如果是一个函数的话,则将第二个可迭代数据里的每一个元素作为函数的参数进行计算,把返回True的值筛选出来;如果第一个参数为None,则直接将第二个参数中为True的值筛选出来。举个例子:
>>> temp = filter(None,[1,0,False,True]) >>> list(temp) [1, True]
利用filter(),尝试写一个筛选奇数的过滤器:
>>> def odd(x): return x%2 >>> temp = filter(odd,range(10)) >>> list(temp) [1, 3, 5, 7, 9]
那现在学习了lambda函数后,完全可以把上述过程转化为一行:
>>> list(filter(lambda x:x%2,range(10))) [1, 3, 5, 7, 9]
2.map()
map在这里不是地图的意思,在编程领域,map一般作“映射”来解释。map()这个内置函数也有两个参数,仍然的hi一个函数和一个可迭代序列,将序列的每一个元素作为函数的参数进行运算加工,直到可迭代序列每个元素都加工完毕,返回所有加工后的元素构成的新序列。
举个例子:
>>> list(map(lambda x:x*2,range(10))) [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
*******************************
三、课时21课后习题及答案
*******************************