一.filter函数简介

filter函数主要用来筛选数据,过滤掉不符合条件的元素,并返回一个迭代器对象,如果要转换为列表list或者元祖tuple,可以使用内置函数list() 或者内置函数tuple()来转换;

filter函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中,就好比是用筛子,筛选指定的元素;

语法:

filter(function, iterable)

参数:

function – 函数名;

iterable – 序列或者可迭代对象;

返回值:通过function过滤后,将返回True的元素保存在迭代器对象中,最后返回这个迭代器对象(python2.0x版本是直接返回列表list);

二.filter函数使用

1.filter函数简单使用

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:何以解忧
@Blog(个人博客地址): shuopython.com
@WeChat Official Account(微信公众号):猿说python
@Github:www.github.com @File:python_process_Pool.py
@Time:2020/1/14 21:25 @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
""" def check(i):
# 如果是偶数返回 True 否则返回False
return True if i%2 == 0 else False if __name__ == "__main__": list1 =[1,2,3,4,5,6]
result = filter(check,list1)
print(result)
print(type(result)) # 将返回的迭代器转为列表list或者元组
print(list(result))
print(type(list(result)))

输出结果:

<filter object at 0x0000015127BA7EB8>
<class 'filter'>
[2, 4, 6]
<class 'list'>

2.filter函数配合匿名函数Lambda使用

def check_score(score):
if score > 60:
return True
else:
return False if __name__ == "__main__": # 成绩列表
student_score = {"zhangsan":98,"lisi":58,"wangwu":67,"laowang":99,"xiaoxia":57} # 筛选成绩大于60的成绩列表
result = filter(lambda score:score > 60,student_score.values())
# 与上面一行代码等价
# result = filter(check_score, student_score.values()) print(result)
print(type(result)) # 将返回的迭代器转为列表list或者元组
print(list(result))
print(type(list(result)))

输出结果:

<filter object at 0x000001B761F88FD0>
<class 'filter'>
[98, 67, 99]
<class 'list'>

注意:filter函数返回的是一个迭代器对象,往往在使用时需要先将其转换为列表list或者元祖tuple之后再操作;

python filter函数其实和内置函数map()使用方法类似,map()函数也是将迭代器或者序列中的每一个元素映射到指定的函数中,操作完成之后再返回修改后的迭代器对象;

猜你喜欢:

1.python匿名函数lambda

2.python map函数

3.python 函数不定长参数*argc,**kargcs

转载请注明:猿说Python » python filter函数

技术交流、商务合作请直接联系博主
扫码或搜索:猿说python
猿说python
微信公众号 扫一扫关注

最新文章

  1. PHP反射API
  2. JavaScript-取消事件-e.preventDefault();
  3. 关于原生JS获取类相关的代码
  4. SPOJ Pouring Water
  5. 在本地环境用虚拟机win2008 sever搭建VS2013 + SVN 代码版本控制环境
  6. DBCP之----&quot;数据库&quot;与&quot;连接池&quot;的连接建立过程
  7. Tree( 树) 组件[4]
  8. Linux里如何设置IP(RED HAT)
  9. 转:从pickle看python类成员的动态加载和类的定位
  10. 保护url时效性和安全性的一种解决方案
  11. python 08
  12. io.netty.resolver.dns.DnsNameResolverContext
  13. OI 助手 | 简洁快速的 OI 工具箱 (原 竞赛目录生成)
  14. 《JAVA与模式》之适配器模式(转载)
  15. c++第二十七天
  16. 如鹏网学习笔记(十)DOM
  17. J2EE项目在weblogic下的改动
  18. vs2010开发activex(MFC)控件/ie插件(三),js调用ocx控件的接口函数
  19. 【刷题】BZOJ 1001 [BeiJing2006]狼抓兔子
  20. Android Context作为参数传递this

热门文章

  1. SpringBoot整合三大组建(Servlet、Listener、Filter)
  2. 设计模式-03工厂方法模式(Factory Method Pattern)
  3. js 字符串方法 和 数组方法总览
  4. CentOS 7 上CNVnator安装
  5. json通过后台获取数据库中的内容,并在前端进行显示
  6. 21种JavaScript设计模式最新记录(含图和示例)
  7. *args 和 **kwargs 的区别
  8. Java7循环结构综合练习
  9. pytorch之 compare with numpy
  10. [MacOS-Memcached]安装