文章目录

  • 初级版本——普通函数:
  • 改进版本——函数嵌套:
  • 高级版本——匿名函数:
  • 终极版本——filter函数:

在Python中总有些奇奇怪怪的函数,filter就是一个,但是它特别强大和实用,了解它本质才能更好得使用它。本篇文章会从最基础的函数嵌套开始分析,都是 filter 函数执行的原理,到最后就知道 filter 函数的妙处了
这里还要用到两个库函数:
startswith(): 判断某字符串是否以参数中的字符串开头
endswith() : 判断某字符串是否以参数中的字符串结尾
二者的返回值都是布尔值:True或False

初级版本——普通函数:

movie_people = ['sb绿巨人','美国队长', 'sb钢铁侠', '蜘蛛侠sb']
def filter_test(array):  #接收列表的形参arrayret = []for i in array:if not i.startswith('sb'):  #判断是否以'sb'开头,如果不是sb开头,返回值为False,有一个not,则可以执行追加语句ret.append(i)   #追加到ret列表中return ret  #python中可以返回列表
print(filter_test(movie_people))  #返回值是ret列表,所以这里也是输出ret列表

结果是:
[‘美国队长’, ‘蜘蛛侠sb’]
因为只有这两个不是以sb开头的

改进版本——函数嵌套:

movie_people = ['sb绿巨人','美国队长', 'sb钢铁侠', '蜘蛛侠sb']
def sb_till(n):return n.endswith('sb')  #判断是否以'sb'结尾,若是,则返回Truedef filter_test(func,array):ret = []for i in array:if not func(i):  #如果是以sb结尾,返回的布尔值为False,则添加到ret列表中ret.append(i)return ret  #python中可以返回列表
res = filter_test(sb_till,movie_people)
#这里filter_test函数传入的形参是sb_till函数和movie_people列表
print(res)

结果是:
[‘sb绿巨人’, ‘美国队长’, ‘sb钢铁侠’]
这几个显然都不是以sb结尾的字符串

高级版本——匿名函数:

movie_people = ['sb绿巨人','美国队长', 'sb钢铁侠', '蜘蛛侠sb']
def filter_test(func,array):ret = []for i in array:if not func(i):ret.append(i)return ret
res = filter_test(lambda n:n.endswith('sb'),movie_people)
#如果n是以sb结尾的话,返回值是True,前面加一个not,则不会保留下来,也不会输出
print(res)

结果是:
[‘sb绿巨人’, ‘美国队长’, ‘sb钢铁侠’]
这里用到了匿名函数的调用,lambda,这样定义的函数可以直接用,冒号前面的n是需要处理的对象,冒号后的n是对n的处理。

终极版本——filter函数:

上面三个版本,实现的功能差不多都是一样的,每个版本都是那么多行的代码,而且逻辑还不简单,如果理解了也可以更好记住 filter 函数。
下面,就是 filter 函数上场了表演了,只需要短短两行就可以实现上面十几行代码所能实现的功能。

movie_people = ['sb绿巨人','美国队长', 'sb钢铁侠', '蜘蛛侠sb']
res = list(filter(lambda n:not n.endswith('sb'),movie_people))
print(res)

Ps:
#遍历第二个参数里面的元素,如果第一个参数是True就保留该元素,
#filter返回的是元素的内存地址,若要输出出该元素,
#需要将返回值list列表化一下,或者tuple元组化

初学者python笔记(filter()函数完全详解)相关推荐

  1. python lambda函数-Python的Lambda函数用法详解

    在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 1.为什么要 ...

  2. python中setattr()函数用法详解

    setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的. getattr()用法详见博文:python中getattr()函数用法详解_IT之一小佬的博客-CSDN ...

  3. python 列表 remove()函数使用详解

    「作者主页」:士别三日wyx remove函数使用详解 1. 基本使用 2. 删除普通类型元素 3. 删除对象类型元素 4. 一次只删一个元素 1. 基本使用 remove() 函数可以删除列表中的指 ...

  4. lc filter在matlab哪,基于python实现matlab filter函数过程详解

    matlab中的filter函数: y = filter(b,a,x) python实现matlab中的filter函数 def filter_matlab(b,a,x): y = [] y.appe ...

  5. matlab filter函数原理,基于python实现matlab filter函数过程详解

    matlab中的filter函数: y = filter(b,a,x) python实现matlab中的filter函数 def filter_matlab(b,a,x): y = [] y.appe ...

  6. python中index函数_详解python中的index函数用法

    1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 de ...

  7. python中squeeze函数_详解pytorch中squeeze()和unsqueeze()函数介绍

    squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...

  8. python中延时函数_详解python中实现延时回调普通函数

    这篇文章主要给大家介绍了关于python中实现延时回调普通函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. 前言 ...

  9. python线程延时函数_详解Python 多线程 Timer定时器/延迟执行、Event事件

    Timer继承子Thread类,是Thread的子类,也是线程类,具有线程的能力和特征.这个类用来定义多久执行一个函数. 它的实例是能够延迟执行目标函数的线程,在真正执行目标函数之前,都可以cance ...

最新文章

  1. Linux中的帮助命令
  2. wordpress Oops! That page can’t be found.
  3. linux centos7 root密码重置
  4. LeetCode 1754. 构造字典序最大的合并字符串
  5. (84)FPGA显示激励(display)
  6. OBJ文件格式分析工具: objdump, nm,ar
  7. 虚拟Linux 訪问win7共享文件夹方法
  8. Java图像识别车牌_车牌识别测试图片集(237幅车牌照片)(文件名均是车牌号)
  9. 5、自写<VBA函数>关于字体与单元格颜色、大小的函数
  10. 微机计算机继电保护原理,微机继电保护的发展历史
  11. java支付宝扫码支付,简单生成二维码方法
  12. 大话西游各服务器位置,《大话西游Ⅱ》服务器合并一览表
  13. 用计算机四舍五入偷银行储户的钱,银行家舍入VS四舍五入(下):.NET发现之旅(四)...
  14. Imagepy图像处理框架中neighbors函数的探索之旅
  15. mysql行转列简单例子_mysql行转列、列转行示例
  16. 目前最好用的云电脑排行有哪些?免费阿里云无影云电脑
  17. Prevent Your Acne With Your Diet
  18. SpringBoot集成Elasticsearch7.4 实战(一)
  19. 大四阶段的社会实践的主要目的是_大四寒假社会实践报告
  20. android批量添加联系人,Android实现批量添加联系人到通讯录

热门文章

  1. element icon图标方向旋转
  2. 服务器系统关了,各种服务器系统的关机
  3. python 搜索功能,使用Python使用网站的搜索功能
  4. html表单自动编号,自动编号插件
  5. java实验多线程机制_使用Java多线程的同步机制编写应用程序 PDF 下载
  6. 检查java_如何检查Java版本?
  7. python中4j什么意思_Python学习:4.数据类型以及运算符详解
  8. txtv28pw河南某中学_中学生骑行典型交通事故案例集 | 知危险会避险
  9. c语言vs2017链表出错,【C++单链表就地逆置】程序无error错误,求指点TAT。
  10. html ready 调用函数,Chrome和JQuery问题 - $(document).ready(function(){});在页面加载之前调用...