python开发函数进阶:匿名函数
一,匿名函数
#简单的需要用函数去解决的问题 匿名函数的函数体 只有一行
#也叫lambda表达式
# cal2(函数名) = lambda n(参数) : n*n(参数怎么处理,并且返回值)
#参数可以有多个,用逗号隔开
#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
#返回值和正常的函数一样可以是任意数据类型
1.函数和匿名函数
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 def cal(n): 5 return n*n 6 print(cal(10)) 7 cal2 = lambda n:n*n 8 print(cal2(10)) 9 10 def add(x,y): 11 return x+y 12 print(add(1,2)) 13 add2 = lambda x,y : x+y 14 print(add2(1,2)) 15 16 #查找大于10的数字 17 l = [10,11,8,12] 18 def func(x): 19 return x>10 20 print(list(filter(func,l))) 21 print(list(filter(lambda x:x>10,l))) 22 23 #数字幂次方运算 24 def pow2(x): 25 return x*x 26 map(pow2,l) 27 print(list(map(lambda x:x*x , l)))
2.匿名函数真的可以匿名,在和其他函数合作的时候
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 #查询字典Value值最大的 5 dic={'k1':10,'k2':100,'k3':30} 6 print(max(dic)) #K3 7 func = lambda k:dic[k] #values 8 print(max(dic,key = func)) 9 print(max(dic,key = lambda k:dic[k])) 10 #运行逻辑 dic >> lambda >> max >> key #模糊 11 12 13 #现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}] 14 #第一种 15 t1 = (('a'),('b')) 16 t2 = (('c'),('d')) 17 print(list(zip(t1,t2))) #[('a', 'c'), ('b', 'd')] 18 print(list(map(lambda t:{t[0]:t[1]} ,zip(t1,t2)))) #zip拉链成列表 map有解压法 19 20 #第二种 21 print([{i:j} for i,j in zip(t1,t2)]) #item = ('a', 'c') i,j = 'a', 'c' 元祖的解包 22 func = lambda t1,t2 : [{i:j} for i,j in zip(t1,t2)] #右边是返回值 23 ret = func(t1,t2) 24 print(ret)