美文网首页
Python高阶函数

Python高阶函数

作者: hollow_02f9 | 来源:发表于2018-11-14 10:14 被阅读0次

    一、高阶函数

    1.map()

    代码演示:

    """
    map(function,iterable)
    function:函数
    iterable:可迭代对象
    作用:将传入的函数依次作用于可迭代对象中的每一个元素,并把结果【Iterator】返回
    """
    #需求1:给一个已知列表中的元素求平方
    def square(x):
        return x ** 2
    list1 = [1,2,3,4,5]
    result1 = map(square,list1)
    #注意:map是一个类,表示一种数据类型,集合或者序列,使用类似于list,tuple,set
    print(result1)   #<map object at 0x000001EE25431DA0>
    print(type(result1))   #<class 'map'>
    print(list(result1))  #[1, 4, 9, 16, 25]
    
    result2 = map(lambda x:x ** 2,list1)
    print(list(result2))
    
    #str = 10
    
    #需求2:将整型元素的列表转换为字符串元素的列表
    #举例:[1,2,3,4]------>["1","2","3","4"]
    #str(1) ---- >字符串1
    #注意:在使用系统函数之前,最好不要出现同名的变量
    result3 = map(str,[1,2,3,4])
    print(list(result3))
    
    
    #需求3:已知两个整型列表,将两个列表中相同位置的元素相加,得到一个新的列表
    def add(x,y):
        return  x  + y
    l1 = [1,2,3,4,5]
    l2 = [6,7,8,9,10]
    
    result4 = map(add,l1,l2)
    print(list(result4))
    

    2.reduce()

    代码演示:

    from  functools  import  reduce
    
    """
    reduce(function,Iterable)  :通过函数对参数列表中的元素进行累积
    function:函数
    Iterable:可迭代对象,一般使用列表
    工作原理:用传给reduce的function先作用于list中第一个和第二个元素,用得到的结果和list中第三个元素计算。。。
    reduce(add,[a,b,c,d])
    add(add(add(a,b),c),d)---->递归
    """
    
    #需求1;求一个已知列表中元素的和
    list1 = [1,2,3,4,5]
    def add(x,y):
        return x + y
    result1 = reduce(add,list1)
    print(result1)
    
    result2 = reduce(lambda x,y:x + y,list1)
    print(result2)
    
    #需求2:将列表[1,3,5,7,9]变换成整数13579
    """
    分析:
    13 = 1 * 10 + 3
    135 = 13 * 10 + 5
    1357 = 135 * 10 + 7
    13579 = 1357 * 10 + 9
    """
    list2 = [1,3,5,7,9]
    def fn(x,y):
        return x * 10 + y
    
    result3 = reduce(fn,list2)
    print(result3)
    
    #需求3:
    #结合map函数,实现一个将str转换为int的函数   int()
    
    #思路:传进来一个字符串,返回一个对应的整数
    def strToInt(s):
        digits = {"0":0,"1":1,"2":2,"3":3,"4":4}
        return digits[s]
    
    #"23401"------>23401
    r0 = map(strToInt,"23401")
    print(list(r0))   #[2, 3, 4, 0, 1]
    
    r1 = reduce(fn,map(strToInt,"23401"))
    print(r1)   #23401
    print(type(r1))   #<class 'int'>
    

    3.filter()

    代码演示:

    """
    filter(function,序列)
    作用:通过指定的条件过滤列表中的元素
    工作原理:将传入的函数依次作用于列表中的每一个元素,根据返回的是True还是False决定元素是否需要保留
    """
    
    #需求1:将列表中的偶数筛选出来
    list1 = [1,2,3,4,5,6,7,8,9]
    #作用:定义筛选的规则
    def func(num):
        if num % 2 == 0:
            return  True
        return  False
    
    result1  = filter(func,list1)
    print(result1)
    print(list(result1))  #[2, 4, 6, 8]
    

    4.sorted()

    代码演示:

    #1.普通排序
    #默认为升序排序,得到了的一个新的列表
    list1 = [4,5,23,3,5,7]
    result1 = sorted(list1)
    print(list1)
    print(result1)  #r[3, 4, 5, 5, 7, 23]
    
    #2.按照绝对值进行排序
    #默认为升序排序,排序的依据是所有元素的绝对值的大小
    list2 = [4,5,-23,3,-5,7]
    result2 = sorted(list2,key=abs)
    print(result2)  #[3, 4, 5, -5, 7, -23]
    
    #3.降序升序
    list3 = [4,5,23,3,5,7]
    result3 = sorted(list3,reverse=True)
    print(result3)
    
    #4.字符也可以实现排序
    list4 = ["f","a","k","z"]
    result4 = sorted(list4)
    print(result4)
    
    #5.自定义排序规则
    #默认为升序排序
    def myFunc(str):
        return len(str)
    list5 = ["gsg","a","34535","efgg","562875678257fhjawhgj"]
    result5 = sorted(list5,key=myFunc)
    print(result5)
    

    二、虚拟环境【掌握】

    1, virtualenv的概述

    virtualenv是用来创建Python的虚拟环境的库,虚拟环境能够独立于真实环境存在,
        并且可以同时有多个互相独立的Python虚拟环境,每个虚拟环境都可以营造一个干净
        的开发环境,对于项目的依赖、版本的控制有着非常重要的作用。
    
    虚拟环境有什么意义?
        如果我们要同时开发多个应用程序,应用A需要Django1.11,而应用B需要Django1.8怎么办?
        这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。
        virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。
    

    2, virtualenv 的安装和使用

    1.安装和创建virtualenv
        a,安装虚拟环境:安装virtualenv跟安装一般的Python库是一样的操作,直接使用pip命令就行了:
            pip install virtualenv
        b,创建虚拟环境:安装完成之后就可以使用virtualenv的命令来创建虚拟环境了,
              首先需要进入需要创建虚拟环境的文件夹,比如F盘的envs文件夹,
              然后使用以下命令创建一个虚拟环境,python版本的路径是可选的:
                virtualenv 虚拟环境名称 [-p python版本的路径]
                如:virtualenv env1 
    2,启动虚拟环境:
            env1\Scripts\activate
        进入虚拟环境后:
            使用pip安装numpy模块
            创建test.py文件,并在文件中使用numpy模块
            在cmd命令窗口使用python test.py执行文件
                
    3,退出虚拟环境(进入真实系统环境): 
            deactivate  
            (如果报错则使用:env1\Scripts\deactivate)
        退出虚拟环境后再执行test.py:
            在cmd命令窗口使用python test.py执行文件
    
    

    3, virtualenvwrapper 的安装和使用

    virtualenvwrapper是virtualenv的包装版,以后用这个,更加方便
    Windows: pip install virtualenvwrapper-win
    (Linux:pip install virtualenvwrapper)
    
    创建:mkvirtualenv    虚拟环境名称  -p  python的路径 
    删除:rmvirtualenv    虚拟环境名称
    (注意:创建的虚拟环境放在用户目录下的Envs中)
    
    进入:workon 虚拟环境名称
    退出:deactivate 
    

    4, pip常用命令

    pip install xxx:安装xxx依赖包
    pip uninstall xxx :卸载xxx包
    pip list:查看所有依赖包
    pip freeze:查看虚拟环境新安装的包
    
    

    相关文章

      网友评论

          本文标题:Python高阶函数

          本文链接:https://www.haomeiwen.com/subject/lbjttqtx.html