Python内置函数之filter map reduce

    Python内置了一些非常有趣、有用的函数,如:filter、map、reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是Python列表方法的三架马车。
    1. filter函数的功能相当于过滤器。调用一个布尔函数bool_func来迭代遍历每个seq中的元素;返回一个使bool_seq返回值为true的元素的序列。

    >>> N=range(10)
    >>> print filter(lambda x:x>5,N)
    [6, 7, 8, 9]

    2. map函数func作用于给定序列的每个元素,并用一个列表来提供返回值。

    >>> N1=[1,2,3]
    >>> N2=[6,5,4]
    >>> map(lambda x,y:x+y,N1,N2)
    [7, 7, 7]
    >>> map(lambda x:x+3,N1)
    [4, 5, 6]

    3. reduce函数,func为二元函数,将func作用于seq序列的元素,每次携带一对(先前的结果以及下一个序列的元素),连续的将现有的结果和下一个值作用在获得的随后的结果上,最后减少我们的序列为一个单一的返回值。

    >>> N=range(1,101)
    >>> reduce(lambda x,y:x+y,N)
    5050

    例1:用map和reduce实现5的阶乘相加(5!+4!+3!+2!+1!)

    >>>print reduce(lambda x,y:x*y,range(1,6))
    >>>print reduce(lambda x,y:x*y,range(1,5))
    >>>print reduce(lambda x,y:x*y,range(1,4))
    >>>print reduce(lambda x,y:x*y,range(1,3))
    >>>print reduce(lambda x,y:x*y,range(1,2))
    '''

    结果为

    120
    24
    6
    2
    1
    '''

    #把上一步的结果变成一个阶乘列表

    >>>print map(lambda a:reduce(lambda x,y:x*y,range(1,a+1)),range(1,6))
    [1, 2, 6, 24, 120]

    #最后把阶乘列表相加,第一题解决

    >>>print reduce(lambda m,n:m+n,map(lambda a:reduce(lambda x,y:x*y,range(1,a+1)),range(1,6)))
    153

    例2:用filter将100~200以内的质数过滤出来
    质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数

    >>>filter(lambda N:len(filter(lambda M:N%M==0,range(2,int(N**0.5)+1)))==0,range(100,201))

    Tue Jun  4 10:35:17 CST 2013

    • 本文由 发表于 2013-06-04
    • 转载请务必保留本文链接:https://linuxeye.com/332.html
    Python脚本批量检查SSL证书过期时间 脚本

    Python脚本批量检查SSL证书过期时间

    背景 云平台https的域名服务器如果超过上百条,如果都分布在不同的服务器或者负载均衡上,如果即将过期,做完替换SSL证书动作后,如何批量检查域名的SSL证书是否替换网站,可通过如下脚本实现。 Pyt...
    腾讯云COS上传、批量删除工具(Python) 脚本

    腾讯云COS上传、批量删除工具(Python)

    腾讯云对象存储COS是类似于阿里云OSS,相比OSS,COS提供每月免费额度:存储空间50G、外网访问流量10G(内网免费)、免费读请求100万次、写请求10万次。对网站备份来说不错,但是,腾讯云提供...
    Python多线程抓取代理服务器 Linux

    Python多线程抓取代理服务器

    Python作为一门功能强大的脚本语言来说,经常被用来写爬虫程序,下面是Python爬虫多线程抓取代理服务器。 年前是用 //linuxeye.com/340.html 来抓取代理服务器的,谁知道过完...
    匿名

    发表评论

    匿名网友