1.什么是匿名函数
def定义的是有名函数:特点是可以通过名字重复调用
def func():#func=函数的内存地址
pass
匿名函数就是没有名字的函数:特点是只能在定义时使用一次
2.为何要用匿名函数
强调:
匿名函数的定义就相当于只产生一个变量值,而没有绑定任何名字,
所以会在定义完之后就被回收,无法重复使用,只能在定义时使用一次
应用:当某一个功能仅使用一次就没有再重复使用的必要了,就应该定义成匿名函数
3.如何用匿名函数
max:
salaries={'egon':3000, 'lii':5000, 'yyh':10000} 取最大值: print(max(salaries,key=lambda k:salaries[k])) 取最小值 print(min(salaries,key=lambda k:salaries[k]))
sorted排序:
salaries={'egon':3000, 'lii':5000, 'yyh':10000} 从小到大 print(sorted(salaries,key=lambda k:salaries[k])) 从大到小 print(sorted(salaries,key=lambda k:salaries[k],reverse=True))
map:
names = ['alex', 'wupeiqi', 'yuanhao', 'kevin', 'hu老师'] 列表生成式: new_names=[name + 'sb' for name in names] print(new_names) map+匿名函数: res = map(lambda x :x+'sb',names) print(list(res))
reduce:
from functools import 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'],'----------'))
filter:筛选
names = ['alex_dsb', 'wxx_sb', 'kevin_sb', 'hu_sb', 'egon'] new_names = [name for name in names if name.endswith('sb')] print(new_names)