zoukankan      html  css  js  c++  java
  • python 内置函数filter、map、reduce的使用说明

    filter、map、reduce 是python 的三个内置函数,对于序列(sequence)(字符串、元组、列表)有效。

    1 filter的使用说明

    filter(function, sequence) 返回一个 sequence(序列),包括了给定序列中所有调用 function(item) 后返回值为 true 的元素。(如果可能的话,会返回相同的类型)。如果该 序列 (sequence) 是一个 string (字符串)或者 tuple (元组),返回值必定是同一类型,否则,它总是 list 。
    示例如下:

    >>> def fi(x):
    ...     if x.endswith('.xml'):
    ...         return x
    ...
    >>> print filter(fi, os.listdir('.'))
    ['default-soapui-workspace.xml', 'soapui-settings.xml']
    

    filter(function, sequence) 的说明:

    • filter 作用在一个序列上, 序列中的每个元素都会被function调用, 此function 必须有判断逻辑,从而输出满足判断逻辑的元素

    2 map 的使用说明

    map(function, sequence) 为每一个元素依次调用 function(item) 并将返回值组成一个链表返回.
    示例如下:

    >>> print map(lambda x : x*x, range(10))
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    

    可以传入多个序列,函数也必须要有对应数量的参数,执行时会依次用各序列上对应的元素来调用函数(如果某些序列比其它的短,就用 None 来代替)。如果把 None 做为一个函数传入,则直接返回参数做为替代。例如:

    >>> seq = range(8)
    >>> def add(x, y): return x+y
    ...
    >>> map(add, seq, seq)
    [0, 2, 4, 6, 8, 10, 12, 14]
    

    3 reduce 的使用说明

    reduce(function, sequence) 返回一个单值,它是这样构造的:首先以序列的前两个元素调用函数 function,再以返回值和第三个参数调用,依次执行下去
    例如,以下程序计算 1 到 10 的整数之和:

    >>> def add(x,y): return x+y
    ...
    >>> reduce(add, range(1, 11))
    55
    

    如果序列中只有一个元素,就返回它,如果序列是空的,就抛出一个异常。
    可以传入第三个参数作为初始值。如果序列是空的,就返回初始值,否则函数会先接收初始值和序列的第一个元素,然后是返回值和下一个元素,依此类推。
    例如:

    >>> def sum(seq):
    ...     def add(x,y): return x+y
    ...     return reduce(add, seq, 0)
    ...
    >>> sum(range(1, 11))
    55
    >>> sum([])
    0
    
    种一棵树最好的时间是十年前,其次是现在!
  • 相关阅读:
    web常用自动化库——selenium总结(转)
    前端框架面试题
    SpringBoot整合Knife4j展示更美观的API文档
    JUC- ThreadLocal学习笔记
    JUC-ThreadPool线程池的使用与学习
    Java8 新特性
    SpringBoot 整合FreeMarker进行邮件发送
    IDEA 打开别人的项目的是Maevn插件依赖出错问题处理
    Liunx常用指令备查
    第四次作业
  • 原文地址:https://www.cnblogs.com/gaozhidao/p/12940469.html
Copyright © 2011-2022 走看看