zoukankan      html  css  js  c++  java
  • python六十二课——高阶函数之filter


    高阶函数之:
    filter函数:过滤数据的,最终返回一个惰性序列对象(filter对象,迭代器对象)
    解释:
    filter的意思:在计算机领域中我们都称为过滤器
    格式:
    filter(fn,lsd):
    参数和map、reduce一样理解
    功能:
    将lsd中的每一个元素都给到fn函数
    如果fn函数的返回值为True,那么就保留这个元素到filter对象中
    如果fn函数的返回值为False,那么就舍弃这个元素,不会保留到filter对象中
    最终filter函数执行完毕了,返回给程序一个filter对象(迭代器对象)
    import collections
    #需求:lt=[1,2,3,4,5,6,7,8]-->效果:[2,4,6,8]
    lt=[1,2,3,4,5,6,7,8]
    
    #代码实现一:老技术
    lt1=[]
    for i in lt:
        if i%2==0:
            lt1.append(i)
    print(lt1)
    
    #代码实现二:新技术
    def func(obj):
        if obj%2==0:
            return True
        return False
    fo=filter(func,lt)
    print(fo,type(fo))
    # print(isinstance(fo,collections.Iterator))
    # print(next(fo))
    print(list(fo))
    
    #终极版
    print(list(filter(lambda x:x%2==0,lt)))
    
    '''
    需求:
    lt = [123,'abcd',0,3.14,0.0,'haha','hehe','',True,False,(),[],{},[1,2,3],{11,22,33},{'name':'jack','age':23}]
    得到效果如下:
    [123,'abcd',3.14,'haha','hehe',True,[1,2,3],{11,22,33},{'name':'jack','age':23}]
    '''
    lt = [123,'abcd',0,3.14,0.0,'haha','hehe','',True,False,(),[],{},[1,2,3],{11,22,33},{'name':'jack','age':23}]
    print(list(filter(lambda x:bool(x),lt)))
    print(list(filter(bool,lt)))
    
    '''
    需求:
    lt1 = ['aaaaaaaa','bbbb','cccccc','ddd']
    得到效果如下:保留长度大于等于4的元素
    ['aaaaaaaa','bbbb','cccccc']
    '''
    lt1 = ['aaaaaaaa','bbbb','cccccc','ddd']
    print(list(filter(lambda x:len(x) >= 4,lt1)))


    返回目录
  • 相关阅读:
    基础 ByteBuffer 和 ByteBuf
    Java 堆栈,内存分配理解
    JVM 调优参数设置
    Python 安装 matplotlib 制图
    UOJ#207. 共价大爷游长沙
    ORM学习 一 : JPA JDBC
    常见的Web攻击手段
    《Kubernetes权威指南第2版》学习(二)一个简单的例子
    五 pyJWT使用
    《Kubernetes权威指南第2版》学习(一) Kubernetes是什么
  • 原文地址:https://www.cnblogs.com/hankleo/p/10514306.html
Copyright © 2011-2022 走看看