当前位置:   article > 正文

(Python)常用高级函数:filter() 的使用_filter函数的用法python

filter函数的用法python

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/208188
推荐阅读
相关标签
  

闽ICP备14008679号