• filter、map、reduce区别


    1.filter

    filter(function,sequence)-->list,tuple or string

    1)       参数func是自定义的过滤函数,在函数func(item)中定义过滤规则。果然func为“None”,则过滤项Item都为真,返回所有序列的元素。

    (2)       参数sequence为待处理的序列。

    (3)       filter()函数的返回值由func()的返回值组成的序列,返回的类型与参数sequence的类型相同。

    filter 对序列做过滤处理,对自定义的函数参数返回一个为TRUE的结果集,返回的类型与参数sequence的类型相同

    def func(x):
        if x>0:
            return x
    print filter(func,[-1,-2,3]))
    
    输出:
    【3】

    注意:filter()的过滤函数func()参数不能为空

    2.reduce

    reduce(function,sequence)-->value

    对序列中的元素连续操作可以通过循环来处理(如对某个序列中的元素进行累加操作)

    (1)       参数func是自定义的函数,实现对参数sequence的连续操作。

    (2)       参数sequence为待处理的序列

    (3)       参数initial可以省略,如果initial不为空,则initial的值将首先传入func()进行计算。如果sequence为空,则对initial的值进行计算。

    def func(x,y):
            return x+y
    print reduce(func,range(10),10)
    print reduce(func,range(3,10))
    
    输出:
    55
    42

    3.map函数

    map(function, sequence) :对sequence中的item依次执行function(item),见执行结果组成一个List返回:
    >>> def cube(x): return x*x*x 
    >>> map(cube, range(1, 11)) 
    [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
    >>> def cube(x) : return x + x 
    ... 
    >>> map(cube , "abcde") 
    ['aa', 'bb', 'cc', 'dd', 'ee']
    另外map也支持多个sequence,这就要求function也支持相应数量的参数输入:
    >>> def add(x, y): return x+y 
    >>> map(add, range(8), range(8)) 
    [0, 2, 4, 6, 8, 10, 12, 14]

    eg:

    求阶层

    s=[]
    a=0
    for i in range(1,5):
        a+=reduce(lambda x,y:x*y,map(lambda x:x+1,range(i)))
        s.append(a)
    print a,s
  • 相关阅读:
    浅谈面向对象语言中对象的使用
    淘宝店铺搜索工具(提升淘宝店铺排名人气)
    JavaScript学习总结二:js闭包(Closure)概念
    JavaScript学习总结一:js常见问题
    GC原理解析(c#)
    VS2010中的测试(2)——单元测试
    VS2010中的测试(3)——数据驱动单元测试
    领域驱动设计实践(二)
    俞敏洪在清华励志演讲
    Ioc最佳实践
  • 原文地址:https://www.cnblogs.com/chenya/p/4234347.html
Copyright © 2020-2023  润新知