高阶函数
- 高阶函数
- python中的内置高阶函数
1.高阶函数
特点:
- 实参是一个函数
- 函数的返回值也是一个函数
示例:
abs() #求绝对值的函数
f = abs #函数本身可以赋值给变量,变量也可以指向函数
def fun(x,y,f): #传递的参数包括函数名
return f(x),f(y) #返回值是函数
print(fun(-10,34,abs))
2.python中内置的高阶函数
- map()
- reduce()
- filter()
(1)map()函数
特点:接收两个参数,一个是函数,一个是序列
作用:map 将传入的函数依次作用到序列的每个元素,并且把结果作为一个对象返回
练习:对于序列的每个元素求阶乘(10个,2~7之间的随机)
import random
def factoria(x):
res = 1
for i in range(1,x+1):
res *= i
return res
li = [random.randint(2,7) for i in range(10)]
print(list(map(factoria,li)))
(2)reduce()函数
特点:接收两个参数,一个函数,一个序列
作用:把一个函数作用在一个序列上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素累计计算
形式:reduce(f,[x1,x2,x3,x4,x5]) = f(f(f(x1,x2),x3),x4)
注意:在python3中时用reduuce()函数,要先将导入
from functools import reduce
示例:求3的阶乘
from functools import reduce
def multi(x,y):
return x * y
print(reduce(multi,range(1,4)))
(3)filter()过滤函数
特点:map类似,也接受一个函数和一个序列
作用:filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃列表中的该元素
示例:输出10以内的偶数
def isodd(num):
if num % 2 == 0:
return True
else:
return False
print(list(filter(isodd,range(10))))