zoukankan      html  css  js  c++  java
  • (Python)list的内建函数 filter(), map(), 和 reduce()

    这一节,我们将主要学习用于list的三个内建函数: filter()map(), 和 reduce().


    1.filter(function, sequence)  逐个从sequence中取一个元素,传入function,返回一个使function为真的序列。 如果参数sequence是str、unicode或者tuple,则返回相同的类型,否则都返回一个list

    参数function:只有一个参数的函数,如果function为None,filter()将返回整个sequence。 

    参数sequence:一个序列(字符串、元组、列表等)

    def testFilter(x):
        return x%2  #x是否能被2整除
    
    print filter(testFilter,range(1,10)) #返回不能被2整除的序列
    print filter(None,range(1,10)) #返回整个range(1,10)序列
    

      运行结果:

    >>> 
    [1, 3, 5, 7, 9]
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    2.map(function, sequence) 逐个从sequence中取一个元素传入function,function的每个返回值组成列表作为map函数的返回值

    参数function:可以有一个参数,或者多个参数,如果有多个参数,对应的map函数的sequence参数也应该有多个,并且每个sequence的元素个数相同

    参数sequence:一个序列(字符串、元组、列表等)

    def testMap(x,y):
        return x+y 
    print map(testMap,range(1,5),range(1,5))
    print map(testMap,range(1,5),range(1,3))

    运行结果:

    >>> 
    [2, 4, 6, 8]
    
    Traceback (most recent call last):
      File "C:/Users/PC/Desktop/pythonstudy/testfff.py", line 11, in <module>
        print map(testMap,range(1,5),range(1,3))
      File "C:/Users/PC/Desktop/pythonstudy/testfff.py", line 9, in testMap
        return x+y
    TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'

    3.reduce(function, sequence) 取sequnce的第一个元素和第二个元素作为初始值传入function,计算后function的返回值和sequnce的下一个元素作为参数传入function进行计算,直到sequence的所有元素计算完成,将最后得到的值作为reduce的返回值

    function:两个参数的函数

    sequence:一个序列(字符串、元组、列表等)

    注:reduce函数还可以有第三个参数,用来初始化第一个用于计算的值

          如果sequence只有一个元素,那么reduce将直接返回该值,如果sequence为空,则会引起一个错误

    def testReduce(x,y):
        return x+y
    
    print reduce(testReduce,range(10)) #打印range(10)的所有元素相加的值,计算过程:0+1+2+..+9
    print reduce(testReduce,range(10),10)#打印10和range(10) 所有元素相加的值,计算过程:10+0+1+2+...+9

    运行结果:

    >>> 
    45
    55
  • 相关阅读:
    高校手机签到系统——Ksoap2的一些使用心得(补充)
    高校手机签到系统——zxing.net生成二维码(补充)
    高校手机签到系统——手机客户端
    高校手机签到系统——第一部分Authority权限系统(下)
    高校手机签到系统——第一部分Authority权限系统(上)
    《算法导论》——顺序统计RandomizedSelect
    《算法导论》——计数排序Counting Sort
    [Asp.Net Core] Blazor Server Side 项目实践
    [Asp.Net Core] Blazor Server Side 开发教程
    视频图文教学
  • 原文地址:https://www.cnblogs.com/Lival/p/4397728.html
Copyright © 2011-2022 走看看