1、高阶函数的由来:把函数作为参数穿入内部.
举例加深理解:在python中,abs()函数可完成对数字的绝对值计算。(正数的绝对值为其本身,负数的绝对值为其相反数);round()函数可以完成对数字的四舍五入。
任意两个数,按要求(先求其绝对值,在四舍五入)进行求和
def f1(num1,num2):
return abs(num1) + abs(num2)
print(f1(-10,20))
def f1(num1,num2):
return round(num1) + round(num2)
print(f1(10.4,20.5))
对以上代码进行简化:
def f1(num1,num2,f):
#f代表要传入的参数(参数是一个函数名,如abs或round)
return f(num1)+f(num2)
print(f1(-10,10,abs))
print(f1(10.4,20.6,round))
2、map()函数
map(func,lst),将传入的函数变量func作用到lst变量的每一个元素中,并将结果组成新的列表(跑python2)/迭代器(python3)返回(类似于列表结构)
lst = [1 ,2,3] ===》func 函数,求某个数的平方,如输入2返回4,输入3返回9 map(func,lst) 返回结果[1,4,9]
def func(n):
return n**2
lst1=[1,2,3]
lst2 =list( map(func,lst1))
print(lst2)
#返回值:[1,4,9]
3、reduce()函数#累加计算
reduce(func,lst),func函数必须有两个参数,每次func计算的结果继续和序列的下一个元素做累积计算。
from functools import reduce
def func(a,b):
return a+ b
lst1=[1,2,3]
lst2 =reduce(func,lst1)
print(lst2)
#返回值:6
4、filter()函数
filter(func,lst)用于过滤序列,过滤掉不符合函数的序元素,返回一个filter对象。若要转换为列表,可使用list来转换。
def func(n):
return n%2==0
lst1=[1,2,3,4,5,6,7,8]
lst2 =list(filter(func,lst1))
print(lst2)
#返回值:[2, 4, 6, 8]