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.欢迎关注微信公众号:傅里叶变换,后台回复”礼包“,获取大数据学习资料。

  • 相关阅读:
    Linux 环境下搭建单机版 Redis
    为什么要同时重写equals和hashcode方法
    使用ThreadPoolExecutor 创建线程池,完成并行操作
    一个简单的通过newFixedThreadPool实现多线程案例
    Java 获取对象的所有属性及其对应的值
    分布式id生成方案总结
    使用idea和gradle编译spring5源码
    Pandas中常用的函数使用
    单链表的反转 python实现实例
    kaggle注册中的坑---2018,12.3试过有效
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/11075031.html
Copyright © 2011-2022 走看看