小菜鸟的python进阶之路 ------- 高阶函数

高阶函数

  • 高阶函数
  • python中的内置高阶函数

 

1.高阶函数

特点:

  •   实参是一个函数
  •    函数的返回值也是一个函数

示例:

abs()       #求绝对值的函数
f = abs     #函数本身可以赋值给变量,变量也可以指向函数

def fun(x,y,f):      #传递的参数包括函数名
    return f(x),f(y)    #返回值是函数

print(fun(-10,34,abs))

小菜鸟的python进阶之路 ------- 高阶函数_第1张图片

 

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)))

小菜鸟的python进阶之路 ------- 高阶函数_第2张图片
 

(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))))

小菜鸟的python进阶之路 ------- 高阶函数_第3张图片

 

 

你可能感兴趣的:(小菜鸟的python进阶之路)