高阶函数
1、匿名函数:lambda
语法:lambda 参数1,参数2: 函数返回值表达式。(参数可以是一个或多个)
func=lambda x,y:x*y
print(func(2,3))
输出:6
应用场景:
x就是列表中的一组数据
print(li)
输出:[[1, 23, 44], [32, 43, 23], [32, 44, 12]]
匿名函数面试题:
li等于5个匿名函数
i取的是最后一个循环的值
输出:
16
16
16
16
16
2、过滤器:filter(内置函数)
作用:对函数进行过滤,留下满足条件的值
表达式:
res = filter(lambda x: x > 10, li)
参数1:过滤规则函数,会根据函数的返回值来进行过滤
参数2:要进行过滤的可迭代对象
data返回的是一个过滤器对象
输出:
<filter object at 0x000001F567A47470>
[32, 43, 43, 32, 11, 23]
3、偏函数:partial
使用偏函数需要导入:from functools import partial
作用:当函数的参数个数太多,用来固定原函数的部分参数(相当于重构函数)
26行:将过滤器函数filter的第一个参数固定 ,data是一个过滤器函数
27行:在调用过滤器函数的时候,就只需要给函数传递一个,可迭代对象的参数
4、map函数
参数1:处理函数
参数2:可迭代对象
将li列表中的值依次取出来,然后传递给handle_data函数,函数执行后,把所有的数据,返回到一个map对象中
5、all函数:(代替and)
all后面可以跟任意可迭代对象
6、any函数:代替or
7、exec函数
eval:识别字符串中有效的python表达式
exec作用:执行字符串中有效的python代码,是一个python执行器
输出:
100
阿豪
8、zip函数:聚合打包
传入zip的必须是可迭代对象
zip()函数在运算时,会以一个或多个序列(可迭代对象)作为参数,返回一个元祖的列表。同时将这些序列中并排的元素配对
zip()函数可以接受任何类型的序列,同时也可以有两个以上的参数,当传入参数长度不一致时,zip能自动以最短序列长度为准进行截取,获得元祖
输出:
[('id', 1), ('name', 'tom'), ('age', 20)]