zoukankan      html  css  js  c++  java
  • python的filter函数的使用方法详解以及使用案例,是否以什么结尾,是否大于什么(判断是True,则留下来)

    1、总共有3个人看电影,有2个人看电影经常说话,我们把他们两个过滤出去

    move_people=["gouguoqi","beiye_sb","xiudiannao_sb"]
    ret=[]
    for n in move_people:
        if n.endswith("sb"):
            pass
        else:
            ret.append(n)
    print (ret)
    
    C:python35python3.exe D:/pyproject/day14函数/filter函数.py
    
    ['gouguoqi']

    2、写成函数应该怎么写

    move_people=["gouguoqi","beiye_sb","xiudiannao_sb"]#1.定义3个看电影的人
    def del_sb(people):#2.定义一个函数,到20行,放入内存中,等待被调用
        ret = []#3.1定义一个空列表
        for n in people:#3.2循环这3个看电影的人
            if n.endswith("sb"):#判断如果是sb结尾的就什么都不干
                pass
            else:#如果结尾不是sb的就把名字追加到空列表ret里面
                ret.append(n)
        return ret#最后函数返回值是ret 也就是一个列表
    print(del_sb(move_people))#3.调用del_sb这个函数,把列表作为参数传给people
    
    C:python35python3.exe D:/pyproject/day14函数/filter函数.py
    
    ['gouguoqi']

    3、改成功能性的函数

    move_people=["gouguoqi","beiye_sb","xiudiannao_sb"]#1.定义3个看电影的人
    def del_end_sb(x):
        return x.endswith("sb")
    def del_sb(func,people):#2.定义一个函数,到20行,放入内存中,等待被调用
        ret = []#3.1定义一个空列表
        for n in people:#3.2循环这3个看电影的人
            if func(n):#判断如果是sb结尾的就什么都不干
                pass
            else:#如果结尾不是sb的就把名字追加到空列表ret里面
                ret.append(n)
        return ret#最后函数返回值是ret 也就是一个列表
    print(del_sb(del_end_sb,move_people))#3.调用del_sb这个函数,把列表作为参数传给people
    
    C:python35python3.exe D:/pyproject/day14函数/filter函数.py
    
    ['gouguoqi']

    4、终极版本就是下面这样了

    lambda x:x.endswith("sb")        这个替换了下面这个自定义函数
    
    def del_end_sb(x):
        return x.endswith("sb")
    
    move_people=["gouguoqi","beiye_sb","xiudiannao_sb"]#1.定义3个看电影的人
    def del_sb(func,people):#2.定义一个函数,到20行,放入内存中,等待被调用
        ret = []#3.1定义一个空列表
        for n in people:#3.2循环这3个看电影的人
            if func(n):#判断如果是sb结尾的就什么都不干
                pass
            else:#如果结尾不是sb的就把名字追加到空列表ret里面
                ret.append(n)
        return ret#最后函数返回值是ret 也就是一个列表
    print(del_sb(lambda x:x.endswith("sb"),move_people))
    
    C:python35python3.exe D:/pyproject/day14函数/filter函数.py
    
    ['gouguoqi']

    5、filter    取出sb结尾的

    move_people=["gouguoqi","beiye_sb","xiudiannao_sb"]
    print (list(filter(lambda x:x.endswith("sb"),move_people)))
    
    C:python35python3.exe D:/pyproject/day14函数/filter函数.py
    
    ['beiye_sb', 'xiudiannao_sb']

    取出不是sb结尾的

    move_people=["gouguoqi","beiye_sb","xiudiannao_sb"]
    print (list(filter(lambda x:not x.endswith("sb"),move_people)))
    
    C:python35python3.exe D:/pyproject/day14函数/filter函数.py
    
    ['gouguoqi']

    filter的语法跟map的语法是一样的,2个参数

    filter(一个处理方法,可迭代对象)

    6、filter遍历序列中的每个元素,判断每个元素得到布尔值,如果True则留下来

    name=[
        {
            "name":"beiye","age":9000,
            "name":"maioye","age":8000,
            "name":"xiudiannao","age":7000,
            "name":"gouguoqi","age":18
        }
    ]
    print (list(filter(lambda x:x["age"]<=18,name)))
    
    C:python35python3.exe D:/pyproject/day14函数/filter函数.py
    
    [{'name': 'gouguoqi', 'age': 18}]

    那name这个列表里面的每个元素以for循环的方式作为参数传递给x,冒号后面是处理方法

  • 相关阅读:
    医学影像分割之HIP
    c++画分形之Julia集与Mandelbrot集
    趣题一道
    华山论剑常用角点检测与角点匹配方法比较
    改变鼠标样式
    Unity3D Pro 利用摄像头产生俯视地图效果
    unity3D小地图教程
    WebBrowser网址中特殊字符的问题
    打开多个unity3D项目 (项目多开)
    u3d按住鼠标右键才转动摄像机的方法
  • 原文地址:https://www.cnblogs.com/gouguoqilinux/p/9153578.html
Copyright © 2011-2022 走看看