1、介绍
也叫 lambda 表达式
a.匿名函数的核心:一些简单的需要用函数去解决的问题,匿名函数的函数体只有一行
b.参数可以有多个,用逗号隔开
c.返回值和正常的函数一样可以是任意的数据类型
d.匿名函数不支持复杂的逻辑判断
e.一般跟其他函数搭配使用
普通函数与匿名函数的对比:
#普通函数 def add(a,b): return a + b print(add(2,3)) #匿名函数 add = lambda a,b : a + b # 相当与 return a+b print add(2,3) 正确用法: print((lambda a,b:a+b)(4,5))
2、匿名函数练习
li = list(range(10)) print(max(li, key=lambda x: li[li.index(x)]))
salaries={ 'egon':3000, 'alex':100000000, 'wupeiqi':10000, 'yuanhao':250 } # 普通函数 def get_value(k): return salaries[k] # print(max(salaries,key=get_value)) # print(min(salaries,key=get_value)) # 匿名函数 print(max(salaries,key=lambda x:salaries[x])) # 取谁的工资最大 # 先 next salaries,得到 键名,定义匿名函数 key=lamdba x:salaries[x] # lamdba x # x 是匿名函数需要的参数,由 salaries[x] 来提供,[x]里的 x 是前面得到的 键名,得到键值,通过键值来进行排序后,返回键名
data = list(range(10)) print(list(map(lambda x: x*x, data)))
str =['a','b','c','d'] def fun(s): if s != 'a': # 过滤条件,如果不等于,返回值 return s ret = filter(fun,str) # 格式:filter(函数名,序列),遍历序列 print(list(ret)) #['b', 'c', 'd'] 显示过滤结果,bcd 不等于 a print(ret) # <filter object at 0x0000000001044240> 即是过滤器对象,也是一个迭代器对象 例2: name_l=[{'name':'egon','age':18}, {'name':'alex','age':1000}, {'name':'yuanhao','age':2000}] res=filter(lambda d:d['age']>100,name_l) print(res) # 返回 filter 对象 for i in res: # 遍历对象 print(i) ===== {'age': 1000, 'name': 'alex'} {'age': 2000, 'name': 'yuanhao'}
.