匿名函数
匿名函数:为了解决一些功能很简单的需求而设计的一句话函数 (python对匿名函数支持有限,只有一些简单的条件下可以用匿名函数)
匿名函数固定格式:
func = lambda *args: args**2 #func:函数名 lambda:关键字 args:参数 args**2:返回值(参数的平方运算)
示例:
def func(n): return n*2 print(func(5)) #10 等价于: func = lambda n:n*2 #匿名函数,又叫 lambda表达式 print(func(5)) #10
匿名函数能和 三元表达式,列表推导式,生成器表达式 一起用
func1 = lambda n: True if n > 5 else False # 匿名函数+三元表达式 print(func1(4)) #False func2 = lambda : [i for i in range(10)] # 匿名函数+列表推导式 print(func2()) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] func3 = lambda : (i for i in range(10)) # 匿名函数+生成器表达式 print(list(func3())) # func3是生成器,强制list()取值 #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
匿名函数和 map(),filter(),soted(),max(),min() 一起用
字典:拿到最大值的键 dic = {'k1':10,'k2':100,'k3':30} func = lambda key: dic[key] # 返回键的值 t = max(dic,key=func) # dic等价于['k1','k2','k3'] key=func()拿到每个key的值,用值对比 #max(dic,key=lambda k:dic[k]) # 可以直接把匿名函数写成这样 (max() + lambda匿名函数) print(t) # k2 想当于: def func(key): return dic[key] a = max(dic,key=func) # max([-5,2,-4,3],key=abs) print(a) # k2 ------------ a = (map(lambda n: n**2,[1,2,3,4])) #lambda 匿名函数+ map() print(list(a)) #[1, 4, 9, 16] --------- ((('a'),('b')),(('c'),('d'))) 用匿名函数写成[{'a': 'c'}, {'b': 'd'}] ((('a'),('b')),(('c'),('d'))) # 等价于 (('a','b'),('c','d')) print(('a') == 'a') True r = zip(('a','b'),('c','d')) # [('a', 'c'), ('b', 'd')] t = map(lambda n: {n[0]:n[1]},r) # n 是 r 中的元组元素 print(list(t)) # [{'a': 'c'}, {'b': 'd'}]