1、定义
匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序。
2、基本语法
lambda 参数:表达式(返回值) = def func(参数): 表达式(return 值)
3、应用示例
#例1:求列表中所有数的平方 lis1 = [1,2,3,4,5] #用函数实现求平方 def getSquare(x): return x*x for i in lis1: print(getSquare(i), end=' ') #输出结果 1 4 9 16 25 #用lambda实现 f_lambda = lambda x:x*x for i in lis1: print(f_lambda(i), end=' ') #输出结果 1 4 9 16 25
4、在内置函数 max() 求最大值,min()求最小值, map() 映射, reduce 合并, filter() 过滤 中经常会用到lambda
示例(map):
#例1 用map把列表中所有的名称全部加上e补充完整,比如'hom->home' strlis = ['her','hom','cak','peopl'] for i in map(lambda x:x+'e',strlis): print(i, end=' ') #输出结果 here home cake people #例2 求两个列表中对应元素进行相加后的和 如lis1[0]+lis2[0] lis1 = [1,2,3,4] lis2 = [4,5,6,7,9] for i in map(lambda x,y:x+y, lis1,lis2): print(i, end=' ') #输出结果 5 7 9 11 #注:map只以长度最小的迭代对象为基准
示例(filter):
#例1 求列表中元素长度大于>2的元素 strlis = ['a','bb','ccc','dddd','eeeee'] for i in filter(lambda x:len(x)>2, strlis): print(i, end=' ') #输出结果 ccc dddd eeeee #例2 求列表中所有value>=100的键值对 diclis = [ {'k':'b','v':98}, {'k':'c','v':99}, {'k':'d','v':100}, {'k':'e','v':101}] for i in filter(lambda x:x['v']>=100, diclis): print(i, end=' ') #输出结果 {'k': 'd', 'v': 100} {'k': 'e', 'v': 101}
总结:
1、匿名函数即没有绑定名字的函数,没有绑定名字,意味着只能用一次就会被回收。
2、匿名函数的应用场景就是:某个功能只用一次就结束了。