首页 > 其他 > 详细

四大高级函数、匿名函数,递归

时间:2020-12-18 10:06:58      阅读:31      评论:0      收藏:0      [点我收藏+]

自定义函数:

    在函数式编程中,为了满足复杂的业务逻辑而自主设计的。

内置函数:

  底层已经写好的,实现一些简单的功能,作为工具使用

四大高阶函数:

    map 函数

    reduce  函数

    filter 函数

    sorted 函数

map函数:根据提供的函数对指定序列做映射

    格式map(function, iterable, ...)

    概述:使用可迭代对象(指定的序列)中的每个元素调用函数,将返回值作为新可迭代对象元素;

       返回值为新的可迭代对象。

    代码演练:

        技术分享图片

 

    注意事项:1、map函数的参数第一个为自定义的函数,这里没有括号

         2、第二个参数不仅仅是列表类型,只要为可迭代对象即可

         3、map函数的返回值为map类型,如果想要拿到里面的数据,①可以使用list()强转;②for循环遍历

reduce函数:对指定的序列内的元素进行累积

    格式:reduce(function, sequence [, initial] ) -> value

    概述:function`参数是一个有两个参数的函数,reduce依次从sequence中取一个元素,

        和上一次调用`function`的结果做参数再次调用`function

    代码演练: 

        技术分享图片

    注意事项:1、reduce需要先进行导入模块 functools import reduce

         2、定义函数,此函数需要有两个参数(规则函数)

         3、reduce(函数名, 序列)

         4、 reduce返回的结果为int类型,可以直接使用

 

 

 

 filter函数:根据条件,过滤掉不符合条件的元素,最终返回一个迭代器对象

   代码演练

        技术分享图片

 

    filter函数的作用

        将可迭代对象的元素依次传入的指定的函数中,如果可迭代对象的单个元素传入后,函数返回True,

        则这个元素被保留下来,如果一个元素传入函数后,函数返回False,则这个元素被抛弃掉,

        最终保留下来的所有元素放置到一个迭代器中,filter可以实现筛选的功能

sorted函数:对所有可迭代对象进行排序操作

    格式:sorted(iterable,  key=abs,  reverse=False) 

    sort 与 sorted 之间的区别

        1、sort 是应用在list上的方法,sorted可以对所有可迭代喜爱那个进行排序操作

        2、list 的 sort 方法返回的是对已经存在的列表进行操作,而内建的函数sorted 方法返回的

         是一个新的list,而不是在原来的基础上进行的操作

    代码演练
        技术分享图片

 

总结:

   map函数:根据提供的函数对指定序列做映射,返回的是一个map类型的对象

   reduce函数:对指定的序列内的元素进行累积,返回的是一个最终的值

   filter函数:根据条件进行过滤,最终返回一个迭代器对象

   sorted函数:对所有可迭代对象进行排序操作,排序规则可自己通过key来规定

 

匿名函数:lambdad表达式

    匿名函数的介绍

      定义函数使用def关键字, python还提供一种生成函数对象的表达式形式---匿名函数(lambda表达式)

      lambda表达式能创建一个可调用的函数, 其返回函数本身而不是赋值给一个变量名, 这就是为什么lambda称之为匿名函数的原因.

    匿名函数的格式

      lambda表达式的语法

          lambda argument_list: expression

      argument_list是参数列表。他的结构与Python函数中的参数列表是一样的,

      expression是一个关于参数的表达式,并且他们一定是单行的

    代码案例

       技术分享图片

    匿名函数的案例

      技术分享图片

    匿名函数应用场景

      1、在def不可以出现的地方

      2、简单优于复杂

 

递归函数:

   问题导入

     给定一个列表,list01 = [1, 3, 5, 7, 9],返回所有数的和。

     (既不能使用for,又不能使用while,同时还不确定列表的长度)

     该如何设计代码程序?

   什么是递归

     1、将问题分解为规模更小的相同问题,

     2、持续分解,直到问题规模小到可以用非常简单直接的方式来解决

     3、递归的问题分解方式非常独特,其算法方面的明显特征就是:在算法流程中调用自身

   问题回顾

     给定一个列表,返回所有数的和。

     (既不能使用for,又不能使用while,同时还不确定列表的长度)

     该如何设计代码程序

   问题分析

     求和实际上最终是由一次次的加法实现的,而加法恰恰有2个操作数

     将问题规模较大的列表求和,分解为规模较小而且固定的2个数求和(加法)?

     同样是求和问题,但规模发生了变化,符合递归解决问题的特征!

   换个方式来思考

      技术分享图片

    递归的优缺点

      优点:递归函数定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,

         但循环的逻辑不如递归清晰  

      缺点:缺点是过深的调用会导致栈溢出。

         1、最大递归深度

         2、递归复杂度高, 不推荐使用

 

 

 

 

 

    

 

 

 

        

   

 

   

             

    

 

四大高级函数、匿名函数,递归

原文:https://www.cnblogs.com/wenchao-123/p/14153246.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!