一. lambda表达式
Python中定义了一种快速简化定义匿名函数的方式叫做lambda表达式,它的作用就是代替一些简单的函数,使得代码看上去更简洁并且可读性高。
- lambda函数是匿名的
- lambda函数一般功能简单
- lambda就是用来定义一个匿名函数的,如果还要给他绑定一个名字的话,就会显得有点画蛇添足,如语法规则里面的例子。
- lambda函数有输入和输出,输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值。
二. lambda语法规则
lambda argument_list: expression
表达式由3部分构成:ps.不要忘记冒号 ' : '
- lambda关键字:Python的保留字,开始一个lambda表达式
- argument_list:参数列表,和函数的参数表类似,表达式中出现的参数需要在argument_list中有定义
- expression:函数的功能(简单),并且表达式只能是单行的,函数的返回值是该表达式的结果。
举个栗子:
add = lambda x, y : x+y
add(1,2) # 结果为3
三. 用途
lambda表达式的使用,一直争议比较大,毕竟增加了程序员的阅读成本。一般来说,作为匿名函数lambda经常使用在函数的参数中,或者pandas数据筛选等等。
部分Python内置函数接收函数作为参数。典型的此类内置函数有这些。
-
map(function, iterable, ...)
序列映射函数:
function是函数名,iterable...是一个或者多个序列;序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的列表的迭代器。
a=[1,2,3,4,5]
b=[1,1,1,1,1]
m=map(lambda x,y: x+y,a,b)
for i in m:
print(i)
Out[1]:
2 3 4 5 6
-
sorted(iterable, cmp=None, key=None, reverse=False)
排序函数:
sorted 可以对所有可迭代的对象进行排序操作。iterable是可迭代序列;cmp是定义比较规则的函数,它具有两个参数,参数的值都是从iterable中取出,此函数必须遵守,大于则返回1,小于则返回-1,等于则返回0;key是定义比较元素的函数,只有一个参数,是从iterable中取出的;reverse = True 降序 , reverse = False 升序。
cmp很少自定义,默认遵循数学中的大小关系。
#按照年龄排序
student=[('Tom','boy',12),('Marry','girl',13),('LiMing','boy',11)]
s=sorted(student,key=lambda x:x[2],reverse=True)
print(s)
Out[2]:
[('Marry', 'girl', 13), ('Tom', 'boy', 12), ('LiMing', 'boy', 11)]
-
filter(function, iterable)
序列过滤函数:
第一个参数为过滤函数名,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中返回。
student=[('Tom','boy',12),('Marry','girl',13),('LiMing','boy',11)]
s=filter(lambda x:x[1]=='boy', student)
Out[3]:
('Tom', 'boy', 12)
('LiMing', 'boy', 11)
网友评论