想必大家都知道匿名是什么含义,匿名就是指没有名字,我们在写程序的过程中有时不需要给函数命名,这时候就可以使用匿名函数,我们在Python中使用lambda表达式来使用匿名函数。
1. 匿名函数的定义
我们通过一个例子来介绍一下lambda函数的简单使用,变量m为我们输入的值,我们需要采用匿名函数来返回m的平方和,也就是输入2要返回值为4。
代码如下:
m = int(input('请输入一个数字:'))#m为输入的值 a = lambda x : x * x #使用变量a来构成一个表达式 print('返回值为:',a(m))
输出结果为:
请输入一个数字:6 返回值为: 36
我们通过下图再来看一下它的结构:
下面再通过一个例子来使用一下匿名函数:
m = int(input('请输入一个数字:'))#m为输入的值 a = lambda x : x + 10 * 10 + x * x print('返回值为:',a(m))
输出结果为:
请输入一个数字:5 返回值为: 130
通过上面两个例子我们可以了解到lambda表达式等同于把函数压缩为一行代码,然后通过变量的定义直接来调用这个函数,这种方式可以简化我们的代码。
2. 序列调用匿名方法
我们在序列中同样可以使用匿名函数,使用匿名函数可以帮助我们进行很快的数据筛选,看下面的例子:
已知一个列表为[1,4,6,9,12,23,25,28,36,38,41,56,63,77,88,99],我们需要返回它里面的偶数并存放在列表当中。
我们可以使用filter函数来进行过滤。
代码如下:
my_list = [1,4,6,9,12,23,25,28,36,38,41,56,63,77,88,99] print(list(filter(lambda x : x % 2 == 0,my_list)))
输出结果为:
[4, 6, 12, 28, 36, 38, 56, 88]
我们从里到外依次来分析这个表达式,filter()函数中的对象前者为我们的筛选方式,后者为我们要筛选的对象,然后我们把这些数据使用list()函数存放在了列表当中,最后打印出来,这种方式可以帮助我们很快的进行数据的整合。
我们在进行排序的时候也可以通过匿名函数来制定规则。
首先我们已知一组列表为[('元组甲',15,33),('元组乙',25,26),('元组丙',7,7)],列表中每个元素中的元组中包含每个元组的名字和最小值以及最大值,我们要根据每个人的元组最大值和最小值的差值来将列表进行排序,看下面代码:
my_list = [('元组甲',15,33),('元组乙',25,26),('元组丙',7,7)] my_list.sort(key=lambda x : x [2] - x[1])#使用key关键字来引入排序方式,排序方式根据第三个元素减去第二个元素的差值,对应索引为2和1 print(my_list)
输出结构为:
[('元组丙', 7, 7), ('元组乙', 25, 26), ('元组甲', 15, 33)]
我们可以先简单的计算一下,他们的差值分别为18、1、0,所以他们的排列顺序应该为丙、乙、甲,通过lambda表达式中的返回结果x[2]-x[1],我们获得了他们的差值,然后根据差值进行排序。
3. 总结
匿名函数在数据筛选的时候显得尤为重要,它能够很快的帮助我们来解决数据复杂繁琐的问题,同时它可以优化我们的代码,使得代码的整体更为简洁,本章节我们就讲到这里,下一节我们来学习函数中的三大基础函数。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程