• (Python)常用高级函数:filter() 的使用


    filter()函数是Python 3内置的一种常用函数,主要的功能是按照给定的条件过滤列表,并返回符合条件的元素。

    filter()函数的语法规则如下:

    可迭代对象中的每个元素将作为参数传递给判断函数进行判断,判断函数将会返回True或False,最后返回所有判断为True的元素。

    1. filter(function,iterable)
    2. function -> 判断条件
    3. iterable -> 可迭代对象

    和map函数相同,在Python中filter函数返回的是一个迭代器,这意味着我们无法通过index访问filter对象,也不能通过len获得filter对象的长度。

    1. # Demo
    2. Demo_lists=[1,2,3,4,5,6,7]
    3. Demo_result_lists=filter(lambda x:x>2,Demo_lists)
    4. print(f'filter type : {type(Demo_result_lists)}')
    5. # Result
    6. filter type : <class 'filter'>

    我们可以直接for循环来依次输出filter对象中的每个元素,但是这个迭代器只能执一次,如果想多次重复使用filter函数的结果,可以使用list将这个迭代器转换为列表。

    1. # Demo
    2. Demo_lists=[1,2,3,4,5,6,7]
    3. Demo_result_lists=filter(lambda x:x>2,Demo_lists)
    4. print(f'filter type : {type(Demo_result_lists)}')
    5. print('First iterator output : ')
    6. for iter in Demo_result_lists:
    7. print(iter)
    8. print('Second iterator output : ')
    9. for iter in Demo_result_lists:
    10. print(iter)
    11. Demo_result_lists=filter(lambda x:x>2,Demo_lists)
    12. Demo_result_lists=list(Demo_result_lists)
    13. print('First list output : ')
    14. print(Demo_result_lists)
    15. print('Second list output : ')
    16. print(Demo_result_lists)
    17. # Result
    18. First iterator output :
    19. 3
    20. 4
    21. 5
    22. 6
    23. 7
    24. Second iterator output :
    25. First list output :
    26. [3, 4, 5, 6, 7]
    27. Second list output :
    28. [3, 4, 5, 6, 7]

    下面给出filter函数的几种用法实例:

    1.利用filter函数筛选出列表中为奇数的元素

    1. # 1.利用filter函数筛选出列表中为奇数的元素
    2. Demo_lists=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
    3. def Is_odd(n):
    4. return n%2==1
    5. Result_lists=filter(Is_odd,Demo_lists)
    6. Result_lists=list(Result_lists)
    7. print(Result_lists)
    8. # Result
    9. [1, 3, 5, 7, 9, 11, 13, 15, 17]

    在Python中,filter函数经常和匿名函数lambda函数一起使用,例如:

    2.利用filter函数过滤掉列表中的数字0

    1. # 2.利用filter函数过滤掉列表中的数字0
    2. Demo_lists=[1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9]
    3. Result_lists=filter(lambda x:x!=0,Demo_lists)
    4. # 同样也可以写成以下形式:
    5. # Result_lists=filter(lambda x:x!=0,Demo_lists)
    6. # 因为在Python中:
    7. # 1==True
    8. # 0==False
    9. Result_lists=list(Result_lists)
    10. print(Result_lists)
    11. # Result
    12. [1, 2, 3, 4, 5, 6, 7, 8, 9]

    3.利用filter函数过滤列表中字母的大小写

    1. # 3.利用filter函数过滤列表中字母的大小写
    2. Alphabet_demo_lists=['a','b','C','D','e','F','H','i']
    3. Upper_result_lists=filter(lambda x:x.isupper(),Alphabet_demo_lists)
    4. Lower_result_lists=filter(lambda x:x.islower(),Alphabet_demo_lists)
    5. Upper_result_lists=list(Upper_result_lists)
    6. Lower_result_lists=list(Lower_result_lists)
    7. print(f'Upper : {Upper_result_lists}')
    8. print(f'Lower : {Lower_result_lists}')
    9. # Result
    10. Upper : ['C', 'D', 'F', 'H']
    11. Lower : ['a', 'b', 'e', 'i']

    4.利用filter函数处理字典构成的列表

    1. # 4.利用filter函数处理字典构成的列表
    2. Dict_demo_lists=[
    3. {'name':'Tom','score':64},
    4. {'name':'Amy','score':75},
    5. {'name':'Jack','score':88},
    6. {'name':'Louis','score':55}
    7. ]
    8. Result_lists=filter(lambda x:x['score']>70,Dict_demo_lists)
    9. Result_lists=list(Result_lists)
    10. print(Result_lists)
    11. # Result
    12. [{'name': 'Amy', 'score': 75}, {'name': 'Jack', 'score': 88}]

    Reference:

    1. python 中的 filter() 函数——用于过滤序列,过滤掉不符合条件的元素,返回符合条件的元素组成新列表。_牛牛来了的博客-CSDN博客_python中filter

  • 相关阅读:
    大数据:海量数据的魅力与挑战
    ROS2——常用命令行(四)
    LeetCode 814 二叉树剪枝[dfs] HERODING的LeetCode之路
    gRPC 基础概念详解
    在macOS上使用dosbox-x配置masm汇编环境
    基于WOA算法的SVDD参数寻优matlab仿真
    吃透Chisel语言.26.Chisel进阶之输入信号处理(二)——多数表决器滤波、函数抽象和异步复位
    Allure与Jenkins持续集成
    【MATLAB教程案例47】基于双目相机拍摄图像的三维重建matlab仿真
    Spring Boot 2.x系列【9】功能篇之SpringApplication启动参数使用详解
  • 原文地址:https://blog.csdn.net/qq_40728667/article/details/125568277