zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    form编码方式application/x-www-form-urlencoded和multipart/form-data的区别
    CentOS开启telnet服务
    借助英语搞清会计中“借”/“贷”的含义(转载)
    乘法器的Verilog HDL实现(转载)
    Meth | 关闭mac自带apache的启动
    Meth | Git冲突:commit your changes or stash them before you can merge. 解决办法
    Meth | Git 避免重复输入用户名和密码方法
    Meth | git Please move or remove them before you can merge
    Meth | git 常用命令
    Meth | 小团队git开发模式
  • 原文地址:https://www.cnblogs.com/chenya/p/4234347.html
Copyright © 2011-2022 走看看