zoukankan      html  css  js  c++  java
  • Python:map()、reduce()、filter()的区别

    文章转于:https://blog.csdn.net/goupper1991/article/details/49803355

    原文博主:https://blog.csdn.net/goupper1991(小二百)

     

    一)reduce()的用法:把一个函数作用在一个序列上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算  

    #注意:累积计算而不是加法运算,而是序列中后面的元素与前面的元素做累积计算(结果是所有元素共同作用的结果)  

    def func(x,y):  

    return x*y  

    print 'reduce1:',reduce(func,range(1,10))  

    print 'reduce2:',reduce(func,[1,2,3])  

    # print sum(range(1,101))#python内置sum()函数求和  

    二)map()接收两个参数,一个是函数,一个是序列,map将传人的函数依次作用到序列的每个元素,并把结果作为新的list返回。(结果是各有各的结果)  

       1)map()中的函数传人两个参数  

    def f(x,y,z,k):  

    return x*y+z+k  

    print 'map1:',map(f,range(1,10),range(2,11),range(1,10),[1,2,3,4,5,6,7,8,9])  

    print 'map2:',map(f,[1,2,3,4],[1,72,35,4],[1,2,3,4],[1,72,35,4])  

       2)map()中的函数传人一个参数  

    def f(x):  

    return x*x  

    print 'map11:',map(f,range(1,10))  

    print 'map22:',map(f,[1,2,3,4])  

    三)filter()是‘筛选函数’,也接收一个函数和一个序列,filter()把传人的函数依次作用于序列的每个元素,然后根据返回值是True还是false决定保留还是丢弃该元素  

    def fr(x):  

    return x%2==1  

    print 'filter1:',filter(fr,range(1,51))#筛选出100以内的所有奇数  

    print 'filter2:',filter(fr,[1,2,3,4])  

    上面代码运行结果:

    reduce1: 362880
    reduce2: 6
    map1: [4, 10, 18, 28, 40, 54, 70, 88, 108]
    map2: [3, 218, 143, 24]
    map11: [1, 4, 9, 16, 25, 36, 49, 64, 81]
    map22: [1, 4, 9, 16]
    filter1: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]
    filter2: [1, 3]

    map()和reduce()的区别:

    1)map()中的函数(是指map()两个参数中的函数中的参数,而不是map()的参数)可以传人一个或者多个参数,reduce()中的函数必须接收两个参数

    2)map()是将传人的函数依次作用到序列的每个元素,每个元素都是独自被函数“作用”一次,reduce()是将传人的函数作用在序列的第一个元素得到结果后,把这个结果继续与下一个元素作用(累积计算),最终结果是所有的元素相互作用的结果。

  • 相关阅读:
    Javascript自动打开匹配的超链接
    Javascript 广告浮动效果在浏览器中间N秒后移动到右下角
    吾爱破解论坛有漏洞!!所有资源都曝光了...开心吧
    C# Ajax 技术
    花花公子写代码
    C++ Strings(字符串)
    C++语言的I/o使用方法详解
    标准c内存函数的使用方法
    [原]Python 简单文件处理
    [原]Python 简单异常处理
  • 原文地址:https://www.cnblogs.com/volcao/p/8694315.html
Copyright © 2011-2022 走看看