匿名函数

 

匿名函数

什么是匿名函数

def 定义的是有名函数:特点是通过是可以通过名字重复调用

def func():#func=函数的内存地址
pass

匿名函数就是没有名字的函数:特点是只能在定义使用一次

为何要使用匿名函数

强调:

匿名函数的定义就是相当于只产生一个变量值,而没有绑定任何名字。

所以会在定义完之后就会被回收,无法重复使用,只能在定义时使用一次。

应用:

当某一个功能仅能使用一次没有重复使用的必要了,就应该定义成匿名函数。

如何使用匿名函数

lambda x,y:x+y

匿名函数常用的使用情况

salaries = {
   'egon': 3000,
   'alex': 100000000,
   'wupeiqi': 10000,
   'yuanhao': 2000
}

max函数

print(max(salaries,key=lambda x:salaries[x]))

key = 后面接的是匿名函数,这个匿名函数使用定义比较的大小的对象。

max()的参数接受的是可迭代对象,

结果就是返回,比较工资的大小,返回名字。

sorted排序

print(sorted(salaries,key=lambda k:salaries[k]))
print(sorted(salaries,key=lambda k:salaries[k],reverse=True))

key排序规则,reverse排序方式,默认False正序 True反序(从大到小)

names = ['alex', 'wupeiqi', 'yuanhao', 'kevin', 'hu老师']

map函数映射

res = map(lambda x: x + 'dsb', names)

map映射,对可迭代对象的元素进行操作,得到map对象也是一个可迭代对象,func参数使用匿名使用一次的。

reduce函数合并

print(reduce(lambda x,y:x+y,[i for i in range(101)]))
print(reduce(lambda x,y:x+y,['h','e','l','l','o'],'----------'))

reduce就是将可迭代对象合并在一起

filter函数筛选

res=filter(lambda name:name.endswith('sb'),names)
print(res)
print(list(res))

 

posted @ 2018-10-10 19:03  msjaxuexi  阅读(263)  评论(0编辑  收藏  举报