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)

 

posted @ 2017-08-05 21:45  liqianlong  阅读(382)  评论(0编辑  收藏  举报