zoukankan      html  css  js  c++  java
  • python教程: filter()和reduce()函数用法详解

    一、filter() 

    在Python内建函数中,有一个和map()函数用法类似、却可以用来过滤元素的迭代函数,这个函数就是filter()。它的函数原型是:filter(function,itearable)

    filter返回的是一个filter对象,可以通过list()或者for循环取出内容。 注意:传入的函数返回值必须是布尔类型。若是真则保留元素,假则过滤掉这元素

    def is_even(x):
        return x%2==0
    a=filter(is_even,[1,2,3,4,5,6])
    print(a) 
    #<filter object at 0x017FCF30>
    print(list(a))
    #[2, 4, 6]
    

    下面在举个例子,体会一下发filter()的的用法。

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    #过滤列表中的元素
    
    def is_empty(s):
        return s.strip()!=''
    print(list(filter(is_empty,['','
    ','	','aa'])))  #['aa']
    

    二、reduce()

    reduce()函数原型是reduce(function,sequence),它的作用是用function对序列进行累积操作。它返回值可以直接输出,不像map和filter返回的是一个迭代对象,还得去转化。

    所谓的累计操作就是就是第 1、2 个元素用 function 函数运算,得到的结果再与第三个数据用 function 函数运算,然后得到的结果再与第四个进行运算,一次类推。

    下面通过一个具体的例子来说明所谓的累计操作是怎么样的。

    注:reduce函数是存放再functiontools模块中的,使用前要导入

    #函数功能是实现阶乘
    from functools import reduce  #导入reduce
    print(reduce(lambda x,y:x*y,[1,2,3,4])
    #输出是24
    

    整个过程如下:
    1、操作第1,2个元素,即1 * 2 得到2
    2、操作1的结果和第3个元素,即 2 * 3 得到6
    3、操做2的结果和第4个元素,即 6 * 4 得到24
    4、返回24

  • 相关阅读:
    C# checklistbox控件用法总结(怎样得到多选的值,以及动态加载数据)
    Tomcat service.xml详解
    修改windows服务器上面tomcat启动窗口的名称
    表空间
    安装selenium遇到的问题
    oracel 锁表查询
    Can not perform this action after onSaveInstanceState
    Caused by: java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.HEADSET_PLUG
    Java.lang.IllegalStateException Activity has been destroyed
    StrictMode 使用
  • 原文地址:https://www.cnblogs.com/djdjdj123/p/13531927.html
Copyright © 2011-2022 走看看