zoukankan      html  css  js  c++  java
  • Python高阶函数总结

    ***高阶函数
    知识的1、函数本身可以赋值给变量,即:变量可以指向函数
    知识点2、函数名也是变量
    知识点3、函数的参数能够接受别的函数,这种函数为高阶函数

    如:
    def add(x,y,f):
    return f(x) + f(y)
    Python内建了map()和reduce()
    ***高阶函数map()
    map()函数接受两个参数,1个是函数,一个是序列,把序列的每一个元素按函数的方式进行计算,计算的返回值即是map()函数的返回值(一个序列)

    map()把运算规则抽象了,除了计算简单的f(x)=x*x,而且还可以计算复杂的函数,比如map(str,[1,2,3,4,5,6,7,8,9])

    ***高阶函数reduce()
    reduce()函数也接受两个参数(1个是函数,一个是序列),也是把函数作用在序列上(如[x1,x2,x3,x4,x5]),但是该参数函数必须接受2个参数,reduce继续把结果和下一个序列元素做累积计算,
    其效果即是reduce(f,[x1,x2,x3,x4,x5]) = f(f(f(f(x1,x2),x3),x4),x5)
    >>> def fn(x,y):
    return x*10 + y
    >>> reduce(fn,[1,2,3,4,5])
    12345

    ***高阶函数filter()
    Python内建的filter()函数用于过滤序列
    和map()类似,filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

    在一个list中,删掉偶数,只保留奇数,可以这么写
    def is_odd(n):
    return n % 2 == 1

    filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])
    # 结果: [1, 5, 9, 15]

    用filter()这个高阶函数,关键在于正确实现一个“筛选”函数

    ***高阶函数sorted()和排序算法
    Python内建的sorted()函数可以对list进行排序

    通常规定,对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。

    另外,sorted()也是一个高阶函数,可以接收一个自定义的比较函数实现自定义的排序
    如sorted([36, 5, 12, 9, 21], lambda x, y: y - x) 和sorted([36, 5, 12, 9, 21][::-1]


    高阶函数总结:
    1、map educefiltersorted函数都可以接收一个函数f和一个序列L,区别是:

    map函数把序列中的各个元素都按f进行执行,返回一个序列

    reduce函数把序列计算前2个的结果,然后用结果继续后后面的元素组成函数参数进行计算,一直累积计算,直到返回结果,返回值是一个结果值

    filter函数用于过滤序列,自定义过滤规则。返回一个序列

    sorted用于排序序列,可以自定义排序规则。返回一个序列

  • 相关阅读:
    未来经济形势未来会怎么样呢疑问?
    今天开车开锅啦!没有经验惹得祸,修了一天的汽车!(开车经验教训学习)
    《飓风营救》(Taken)(父女情深电影推荐)
    The Pursuit of Happyness 当幸福来敲门(励志电影推荐)
    老婆入院待产观察
    闵行区电动自行车上牌地址
    (转载)中国99%白领要破产 买房干嘛???
    日食图片(转载)
    简单的配置iis让主机支持wap
    大数据量的分页存储过程代码
  • 原文地址:https://www.cnblogs.com/qiufengsuopo/p/8683155.html
Copyright © 2011-2022 走看看