# 1.
fun1 =lambda a, b:abs(a)+abs(b)print(fun1(-3,5.2))# 2.deffun2(a, b, fn):# 高阶函数范例,将函数abs作为参数传入fun2中return fn(a)+ fn(b)print(fun2(-3,5.2,abs))# 3.进一步简化
fun3 =lambda a, b, fn: fn(a)+ fn(b)print(fun3(-3,5.2,abs))print(fun3(1.2,1.6,round))
二、map()
"""
内置高阶函数
"""# map(func, lst) -- 将传入的函数变量func作⽤用到lst变量的每个元素中,并将结果返回一个迭代器deffun1(x):return x **2
list1 =[1,2,3,4,5]
result =map(fun1, list1)print(result)print(list(result))# 数据类型转换为list
三、reduce()
import functools
list1 =[10,20,30,40]
list2 =[1,2,3,4]deffunc(a, b):return a + b
deffunc01(a, b):return a * b
# reduce(func, list) -- func必须有两个参数每次func计算结果和序列的下一个元素做累计计算
result = functools.reduce(func, list1)print(result)
result01 = functools.reduce(func01, list2)print(result01)
四、filter()
list1 =[1,2,24,23,45,26]# 1.filter(func, lst) -- func 函数是条件,filter函数把满足条件的元素过滤出来,组成resultdeffunc(x):return x %2==0deffunc02(x):return x >20
result =filter(func, list1)print(result)print(list(result))
result02 =filter(func02, list1)print(result02)print(list(result02))# 2.更加简便的写法--推导式
list2 =[i for i in list1 if i %2==0]print(list2)
func03 =lambda x: x >20
result03 =filter(func03, list1)print(list(result03))