Python3 匿名函数
定义一个函数与变量的定义非常相似,对于有名函数,必须通过变量名访问
def func(x,y,z=1):
return x+y+z
print(func(1,2,3))
匿名函数定义:使用 lambda 来创建匿名函数
匿名函数1. 没有名字 2:函数体自带return
匿名函数
def func(x,y,z=1):
return x+y+z
print(lambda x,y,z=1:x+y+z)
function <lambda> at 0x0000000003469488>
匿名函数也是一个函数对象,匿名函数赋值给一个变量,再利用变量来调用该函数
f=lambda x,y,z=1:x+y+z
print(f)
print(f(1,2,3))
匿名函数的应用场景:应用于一次性的场景,临时使用
2、匿名函数结合使用内置函数的用法
max,min,sorted,map,reduce,filter的用法
字典的运算:最小值,最大值,排序
salaries={ 'egon':3000, 'alex':100000000, 'wupeiqi':10000, 'yuanhao':2000 } print(max(salaries)) # 默认比较key值大小 print(max(salaries.values())) # 比较values值 print(max(salaries,key=lambda name:salaries[name])) 取values,来比较 print(min(salaries,key=lambda name:salaries[name])) 取values,来比较 print(max(zip(salaries.values(),salaries.keys()))[1]) # 通过zip的方式实现 def get_value(name): return salaries[name] print(max(salaries,key=get_value))
names=['alex','wupeiqi','yuanhao','yanglei','egon'] res=map(lambda x:x if x == 'egon' else x+'二狗子',names) print(res) print(list(res)) names=['alex','wupeiqi','yuanhao','yanglei','egon'] def my_map(func,seq): for item in seq: yield func(item) res1=my_map(lambda x:x+'_二狗',names) print(next(res1)) print(next(res1)) functools中导入reduce模块 from functools import reduce print(reduce(lambda x,y:x+y,range(101),100)) print(reduce(lambda x,y:x+y,range(101)))
names=['alex_二狗','wupeiqi_二狗','yuanhao_二狗','yanglei_二狗','egon'] print(list(filter(lambda name:name.endswith('二狗'),names)))