Python内置函数之匿名(lambda)函数

              Python内置函数之匿名(lambda)函数

                                         作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

一.匿名函数

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 def func1(x):
 8     return x**2
 9 print(func1(10))
10 del func1              #由于函数我们只调用了一次,调用完毕之后就可以删除了。
11 
12 func2= lambda x:x**2  #这就是一个没有名字的函数,第一个x表示函数的参数,之后的x表示返回的函数体,用lambda声明的函数我们称之为匿名函数。
13 print(func2(10))
14 
15 
16 """
17 lambda函数我们称之为匿名函数:
18     优点:
19         1>.可以替换一些简单的功能的函数;
20         2>.用关键字lambda声明匿名函数,其中冒号之前是匿名函数的参数,冒号之后则是具体的代码;
21         3>.当函数调用完毕会被Python解释器释放内存,清理掉多余的内存空间;
22     缺点:
23         1>.不能完全替换有名称的函数且功能实现的功能简单,对一些复杂的逻辑就没法用匿名函数替换;
24 """
25 
26 
27 #以上代码执行结果如下:
28 100
29 100

二.最大值(max)与最小值(min)

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 salaries = {
 8     "yinzhengjie":100000,
 9     "alex":800000,
10     "agon":500000,
11 }
12 
13 res = zip(salaries.values(),salaries.keys())        #调用内置函数的拉链函数将人名和薪资组合成一个元组;
14 # print(max(res)[-1])                                 #取薪资最少的人名;
15 # print(min(res)[-1])
16 
17 print(max(salaries,key=lambda x:salaries[x]))   #当然我们可以用匿名函数来做相同的功能;
18 print(min(salaries,key=lambda x:salaries[x]))   #取薪资最少的人名;
19 
20 
21 
22 
23 #以上代码执行结果如下:
24 alex
25 yinzhengjie

三.映射函数(map)

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 
 8 list_num = [1,3,5,7,9]
 9 m = map(lambda x:x**2,list_num)                                     #映射函数map,这里我们是对一个列表案例做处理;
10 print(list(m))
11 
12 names = ["yinzhengjie","wudonghang","fangheyi","taotao"]
13 print(list(map(lambda item:item+"_NB",names)))
14 
15 
16 
17 #以上代码执行结果如下:
18 [1, 9, 25, 49, 81]
19 ['yinzhengjie_NB', 'wudonghang_NB', 'fangheyi_NB', 'taotao_NB']

四.reduce函数

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 
 8 from functools import reduce
 9 print(reduce(lambda x,y:x+y,range(100),100)) #第一个参数是需要执行的代码,第二个参数是循环条件,第三个数字是指定一个起始值;
10 
11 
12 # res = 0
13 # for i in range(101):
14 #     res += i
15 # print(res)
16 
17 
18 
19 #以上代码执行结果如下:
20 5050

五.过滤函数(filter)

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 names = ['yinzhengjie_NB', 'wudonghang_NB', 'fangheyi_NB', 'taotao_NB',"wuzhiguang","hansenyu"]
 8 
 9 print(list(filter(lambda name:name.endswith("_NB"),names)))     #只过滤列表names中含有“_NB”字母的元素
10 
11 
12 
13 #以上代码执行结果如下:
14 ['yinzhengjie_NB', 'wudonghang_NB', 'fangheyi_NB', 'taotao_NB']

六.排序函数(sorted)

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 
 8 list_num = [1,4,3,6,7,9,2,8]
 9 print(sorted(list_num))                         #正序排序
10 print(sorted(list_num,reverse=True))            #倒叙排序
11 
12 
13 
14 
15 #以上代码执行结果如下:
16 [1, 2, 3, 4, 6, 7, 8, 9]
17 [9, 8, 7, 6, 4, 3, 2, 1]

 

posted @ 2018-03-03 23:21  尹正杰  阅读(410)  评论(0编辑  收藏  举报