zoukankan      html  css  js  c++  java
  • [ python ] 匿名函数和高阶函数

    匿名函数

    描述:
        关键字 lambda 定义的函数
        
    语法:

        函数名 = lambda 参数:返回值



    返回值:
        函数返回结果值

    实例:

    一个参数的匿名函数:

    func = lambda x: x*x
    
    f = func(2)
    print(f)
    
    # 执行结果:
    # 4
    

     多个参数的匿名函数:

    func = lambda x, y: x+y
    
    f = func(1, 2)
    print(f)
    
    # 执行结果:
    # 3
    

    高阶函数

    (1)map

    描述:
        map()会根据提供的函数对指定序列做映射。
        
        第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数的返回值的新列表
        
    语法:

    map(function, iterable, ...)



    参数:
        function -- 函数
        iterable -- 一个或多个序列
        
    返回值:
        python 2.X 返回列表
        python 3.X 返回迭代器

    实例:

     提供两个列表,对相同位置的列表数据进行相加

     (2)reduce

    描述:
        对参数序列中的元素进行累积,效果如下:
        
        reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
        
    语法:

    reduce(function, iterable[, initializer])



    参数:
        function -- 函数,有两个参数
        iterable -- 可迭代对象
        initializer -- 可选,初始参数
        
    返回值:
        返回函数计算结果

    实例:

     结合匿名函数+高阶函数的使用:

    from functools import reduce
    
    r = reduce(lambda x, y: x + y, [1,2,3,4,5])
    print(r)
    
    # 执行结果:
    # 15
    

    (3)filter

    描述:
        python内建的 filter() 函数用于过滤序列
        
    语法:
        filter()接收一个函数和一个序列,filter()把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False 决定保留还是丢弃该元素

    实例:

    去掉list中的偶数,只保留奇数

    l = [1,2,3,4,5,6,7, 8, 9]
    def is_odd(n):
        return n % 2 == 1
    
    
    f = filter(is_odd, l)
    print(list(f))
    
    # 执行结果:
    # [1, 3, 5, 7, 9]
    

    练习:

    回数是指从左到右读和从右到左读都是一样的数,例如:12321,909  请利用 filter() 筛选出回数

    def is_palindrome(n):
        hx = str(n) 	# 首先将参数转换为str类型
        if hx == hx[::-1]:	# 如果从左到右,从右到左都相等,则返回回数
            return hx
    

    (4)sorted

    描述:
        sorted() 函数对所有可迭代的对象进行排序操作。
        
    sort 和 sorted 区别:
        sort 是应用在 list 上的方法,sorted可以对所有可迭代的对象进行排序操作。
        list 的 sort 方法返回是对已经存在的列表进行操作,无返回值,而内建函数sorted 方法返回的是一个新的list,而不是在原来的基础上进行的操作
        
    语法:

    sorted(iterable[, cmp[, key[, reverse]]])


        
        key: 主要用来进行比较的元素,只有一个参数,具体的函数的参数就是取自与可迭代对象中,指定可迭代对象中的一个元素来进行排序。
        reverse:默认排序规则是升序排序, reverse=True 则降序排序
        
    返回值:
        返回重新排序的列表

    实例:

    比较数字

    In [1]: sorted([36, 5, -12, 9, -21])
    Out[1]: [-21, -12, 5, 9, 36]
    

    定义key函数,使用绝对值进行排序

    In [2]: sorted([36, 5, -12, 9, -21], key=abs)
    Out[2]: [5, 9, -12, -21, 36]
    

    定义key函数,使用绝对值进行降序排序

    In [3]: sorted([36, 5, -12, 9, -21], key=abs, reverse=True)
    Out[3]: [36, -21, -12, 9, 5]
    

    (5)zip

    描述:
        zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
        如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

    语法:

    zip([iterable, ...])


        
        iterable: 一个或多个迭代器
        
    返回值:
        返回元组列表
        
    实例:

    In [10]: a = [1,2,3]
    
    In [11]:  b = [4,5,6]
    
    In [12]: list(zip(a, b ))
    Out[12]: [(1, 4), (2, 5), (3, 6)]
    
    
    #以最短的列表作为组合的结尾
    
    In [13]: a = [1,2,3,4,5]
    
    In [14]: b = [1,2]
    
    In [15]: list(zip(a, b ))
    Out[15]: [(1, 1), (2, 2)]
    
  • 相关阅读:
    【php】错误日志处理
    【php】正则表达式
    【php】字符串
    【PHP】数组
    【PHP】函数
    【PHP】流程控制
    【PHP】PHP运算符
    【PHP】PHP基本语法
    【前端】CSS总结
    SVN与Apache整合
  • 原文地址:https://www.cnblogs.com/hukey/p/9754016.html
Copyright © 2011-2022 走看看