• 洗礼灵魂,修炼python(25)--自定义函数(6)—从匿名函数进阶话题讲解中解析“函数式编程”


    匿名函数进阶

    前一章已经说了匿名函数,匿名函数还可以和其他内置函数结合使用

    1.map

    map():映射器,映射

    list(map(lambda x:x*2,range(10)))  #把range产生的数字映射进lambda函数里进行计算

    结果:

     注意:mapmap(function, sequence[, sequence, ...])接受的参数,第一个是函数,第二个,第三个可选参数也是序列

     当第一个参数不为函数时:

     

    因为把函数放进去,即代表要进行运算处理,设置为None即表示不做计算

    说到这,说一下reduce()函数

    2.reduce

    reduce(function, sequence[, initial])看这个参数就知道和map函数很类似对吧?

    看例:

    有没有发现什么?是的,此时它就是用来计算总数的

    还有,reduce的第三个参数是一个基数,用来设置起始值的:

    而这些所有计算最关键的都在于传入的函数f,它是设定怎么计算的,比如我要让计算做平方:

     

    报错了,提示的是reduce必须给两个参数,我确实给了两个参数,但是还是报错啊?

    再结合前面的例子,其实说的是reduce接受的函数必须接受两个参数,并不是指的reduce自身接受两个参数,所以,在使用reduce的时候,必须事先考虑好怎么计算,并不是什么都可以计算的

    reduce可以用来操作阶乘:

    比如5的阶乘:

     

    那么既然都说到这了,顺便说说filter函数

    3.filter函数

    filter(function or None, sequence):过滤器,筛选为真的参数

    例:

    再看:

    python2下:

    python3下:

     

     所以,python2和python3下使用filter是不同的,记住就行

     同样,filter函数也可以结合lambda匿名函数来计算:

    是不是方便很多?这就是匿名函数的好处

    那么以上的几个函数,其实就是函数式编程的体现(你以为我会真的只是简单对匿名函数的补充?哈哈,这只是套路需要/滑稽)

    函数式编程

    1.什么是函数式编程?

    又称泛函编程,是一种编程范型。它将计算机运算视为数学上的函数计算,并且避免可变状态以及可变数据

    2.哪些是函数式编程:

    函数式编程语言最重要的基础就是lambda演算,而且lambda演算的函数可以接受函数当作输入和输出

    3.支持函数式编程的语言挺多的,但python支持的函数式编程有限:

    1):map(function, sequence[, sequence, ...]):

    将函数func作用于给定序列的每个元素,并用一个列表来提供返回值,如果func为None,则直接将后面的参数中序列中的每个元素依次组成一个新的列表,如果元素数量不对应,直接以None代替

    2):reduce(function, sequence[, initial]):
    将二元函数(两个参数)作用于seq序列的元素,每次携带一对(之前的结果以及下一个序列元素),依次将现有的结果和下一个值按照二元函数的计算规则计算,最后得到一个值返回,如果初始值iniial给定,则以这个初始值作为基数和序列中的第一个元素计算,得到结果再与下一个序列元素计算,依次类推得到一个值返回

    3):filter(function or None, sequence):

    调用一个会返回布尔值的func来遍历每个seq中的元素,返回一个使func返回值为True的元素组成的序列

    4.函数式编程有如下好处:

    1):代码更简洁,符合python宗旨
    2):数据集操作,输入和输出都可以一起
    3):没有循环体,减少临时变量,逻辑变得简洁
    4):代码变成了在描述你要干什么,而不是怎么去干。

  • 相关阅读:
    Java
    Spring
    Q&A
    Q&A
    Q&A
    Spring
    Elasticsearch部署及基本概念
    rust(二) 变量及类型
    rust(一) 一些命令
    vim笔记
  • 原文地址:https://www.cnblogs.com/Eeyhan/p/7650268.html
Copyright © 2020-2023  润新知