一·高阶函数
把函数作为参数传入
abs() 求绝对值
round() 四舍五入
例子:任意两个数字,按照指定要求整理数字后进行求和计算
一般方法
def add_num(a,b):
return abs(a) + abs(b)
result = add_num(-3,1)
print(result) #3
高阶函数方法:增加灵活性,传入任意函数
def add_num(a,b,f)
return f(a) + f(b)
print(add_num(10,-20,abs)) #30
print(add_num(1.6,2.1,round)) #4
定义一个参数f,用来传递函数
二·内置的高阶函数
1.map()
map(func,lst),将传入的函数变量func作用到list变量的每个元素中,并将结果组成新的列表
例子:计算list1序列中各个数字的2次方
list1 = [1,2,3,4]
def func(x):
return x ** 2
result = map(func,list1)
print(result) #迭代器
print(list(result)) #[1,4,9,16]
2.reduce()
reduce(func,lst),其中func必须有两个参数,每次func计算的结果和序列下一个元素做累积计算
例子:计算list1序列中各个数字的累加和
import functools
list1 = [1,2,3,4,5]
def func(a, b):
return a + b
result = functools.reduce(func,list1)
print(result) #15
即1+2+3+4+5
3.filter()
filter(func,lst)函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象。如果要转换成列表,可以用list()来转换。
list1 = [1,2,3,4,5,6,7,8,9,10]
def func(x):
return x % 2 == 0
result = filter(func,list1)
print(result) #<filter boject at 0x00000hshw667...>
print(list(result)) #[2,4,6,8,10]