匿名函数的好处:
1.简化代码的可读性:由于普通的屌丝函数阅读时经常要
跳到开头def定义部分,使用lanbda函数可以省去这样的步骤
2.省去取名字的问题:对于一些比较抽象并且在整个程序中只调用
一两次的函数,我们可以直接使用匿名函数
3.python写一些执行脚本时,使用lambda就可以省下定义函数过程,比如
说我们只是需要写个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数
然后再写调用,使用lambda就可以使得代码更加简洁。
语法:
格式:
lambda 形参 : 函数体
返回值:
返回一个函数的对象
例:
>>> lambda x : x*x
<function <lambda> at 0x00000000026FFF98>
一般情况下,我们这样使用:先用变量g接受匿名函数
返回的函数对象;然后用变量g去调用函数
>>> g = lambda x : x*x
>>> g(2)
4
–
–
两个牛逼的BIF
1. filter:过滤器
>>> help(filter)
Help on built-in function filter in module __builtin__:
filter(...)
filter(function or None , sequence) -> list, tuple, or string
#filter( 函数 or 无函数, 序列 )
Return those items of sequence for which function(item) is true.
#返回使函数为true的序列元素
If function is None, return the items that are true.
#如果没有函数,返回序列元素为true的元素
【例1】
>>> filter(None,[1,2,0,[False],False,True]) #无函数None
[1, 2, [False], True]
>>> filter(None,(False,0))
()
【例2】有函数:返回0-100内的奇数
>>> filter(odd,range(0,100))
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]
>>> filter(lambda x : x%2 , range(100))
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]
2. map :映射
>>> map(lambda x:x%2,range(10))
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
>>> map(lambda x:x*2,range(10))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> map(lambda x : x-1 , range(10))
[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8]
解释:把range(10)形成的列表list中的每一个元素依次取出来,
再调用function,最后返回生成序列。