zoukankan      html  css  js  c++  java
  • 高阶函数

    高阶函数指的是接收函数作为参数的函数,Python 内置的高阶函数有:map() 、reduce() 、filter()

    map() 接收一个函数和一个序列作为参数,语法为 map(function, sequence),相当于依次把序列的值交给接收的函数进行处理,例子如下:

    In [13]: def square(x):
       ....:     return x ** 2
       ....: 
    
    In [14]: map(square, [1, 2, 3, 4, 5])
    Out[14]: [1, 4, 9, 16, 25]
    In [16]: map(lambda x: x ** 2, [1, 2, 3, 4, 5])    # map()函数通常与匿名函数结合使用
    Out[16]: [1, 4, 9, 16, 25]

    reduce() 接收一个函数和一个序列作为参数,语法为 reduce(function, sequence),相当于把序列的值交给接收的函数进行处理,例子如下:

    In [5]: def fun(x, y):
       ...:     return x+y
       ...: 
    
    In [6]: reduce(fun, [1, 2, 3, 4, 5])    # 把序列的值交给接收的函数进行处理,结果相当于((((1+2)+3)+4)+5)
    Out[6]: 15                              # 注意是先计算前两个的值,再拿第三个序列值交给函数处理,依此类推
    In [7]: reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])    # reduce()通常与匿名函数结合使用
    Out[7]: 15

    filter() 用于过滤序列,过滤掉序列中不符合条件的元素,结果返回一个由符合的元素组成的列表;该函数接收两个参数,第一个为函数,第二个为序列,
    语法为 filter(function, sequence),表示将序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中

    In [9]: def is_odd(n):
       ...:     if n % 2 == 1:
       ...:         return True
       ...:     
    
    In [10]: filter(is_odd, range(1, 10))
    Out[10]: [1, 3, 5, 7, 9]
    In [12]: filter(lambda n: n % 2 == 1, range(1, 10))    # filter()通常与匿名函数结合使用
    Out[12]: [1, 3, 5, 7, 9]

        

  • 相关阅读:
    数学趣题——汉诺塔
    数学趣题——选美比赛
    数学趣题——计算组合数
    (结构型模式)Proxy——代理模式
    SHELL脚本的基础知识2——使用结构化命令
    数学趣题——寻找假币
    Cocoa使用自定义对话框的方法
    回调函数
    ObjectiveC 内存管理(转)
    mac 密码输入框控制——只能输入数字和字母,禁止特殊字符的输入
  • 原文地址:https://www.cnblogs.com/pzk7788/p/10263083.html
Copyright © 2011-2022 走看看