zoukankan      html  css  js  c++  java
  • Python连载15-高阶函数&map映射

    一、高阶函数

    1.定义:把函数作为参数使用的函数叫做高阶函数

    (1)变量可以设置为赋值

    a=100
    
    b=a
    
     

    (2)函数名称就是一个变量

    def FunA():
    
      print("FunA()")
    
    FunA()
    
    FunB = FunA
    
    FunB()

    注意:i.函数名称是变量。ii.FunA和FunB只是名称不一样而已

    iii.既然函数名称是变量,则应该可以被当做参数传入另一个函数中去。

    2.高阶函数举例

     
    
    #funA是一个普通函数,返回一个传入数字的100倍数字
    
    def funA(n):
    
        return n * 100
    
    #在写一个函数,把传入参数乘以300倍,利用高阶函数
    
    def funB(n ):
    
        return funA(n) * 3
    
    print(funB(9))
    
     

    我们再写一个函数,对比一下谁的调用更好

    def funA(n):
    
        return n * 100
    
    def funC(n,f):
    
        #假定函数是把n扩大三百倍00
    
        retrun f(n) * 3
    
    print(funC(9,funA))

    很显然下面的调用是更好的:

    (1)减少了函数之间的耦合性,我们利用变量来达到传参的目的

    (2)下面的函数扩展性更好,例如:我想要扩大500倍呢,再建立一个函数即可,而不用区修改原有的函数。

    3.系统的高阶函数

    (1)原意就是映射,即把集合或者列表的元素,每一个元素都按照一定规则实行操作,生成一个新的列表或者集合。

    (2)map函数是系统提供的具有映射功能的函数,返回值是一个迭代对象

    l1 = [i for i in range(10)]
    
    print(l1)
    
    l2 = []
    
    for i in l1:
    
        l2.append(i*10)
    
    print(l2)
    
    #利用map来实现
    
    def mulTen(n):
    
        return n*10
    
    l3 = map(mulTen,l1)
    
    print(type(l3))
    
    print(l3)
    
    print(list(l3))
    
    l4 = [i for i in l3]
    
    print(l4)

    前两行不解释,第三行这个map类,第四行有历史原因:python2是指在列表上操作则返回列表,但python3改了,在列表操作返回不是类,至于是什么意思,我也不清楚。第五行我们列表化打印出来了。第六行,遗留问题为啥是空列表?

    二、源码:

    d19_2_higher_order_fuction

    地址:https://github.com/ruigege66/Python_learning/blob/master/d19_2_higher_order_fuction​

    2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)

    3.博客园:https://www.cnblogs.com/ruigege0000/

    4.欢迎关注微信公众号:傅里叶变换,后台回复”礼包“,获取大数据学习资料。

  • 相关阅读:
    python3 入门
    Python2 的列表排序
    数据库阻塞SQL的隔离级别
    数据库阻塞讲解设计应用程序时避免阻塞的八个准则
    DELPHI学习简单类型
    DELPHI学习结构类型
    InsideVCL第3章面向对象程序语言和Framework
    数据库阻塞分析死锁并处理
    面向对象开发实践之路
    DELPHI hint 的应用
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/11075031.html
Copyright © 2011-2022 走看看