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
  • 相关阅读:
    在ashx页面中获取session
    写给程序猿们的交互设计
    javascript如何合并多个数组
    <%%>
    #实用# 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的原因
    通过ContentType = "text/XML" 实现ASP输出xml
    [记录] Host Office Document In WebBrowser control in a Windows Form Application.
    [转载]error LNK2001: unresolved external symbol __DllMainCRTStartup@12错误
    Access database not open
    一些Access MVP们的博客
  • 原文地址:https://www.cnblogs.com/chenya/p/4234347.html
Copyright © 2011-2022 走看看