前文说到python高阶函数之map,相信大家对python中的高阶函数有所了解,此次继续分享python中的另一个高阶函数filter。

先看一下filter() 函数签名

>>> help(filter)
Help on class filter in module builtins: class filter(object)
 |  filter(function or None, iterable) --> filter object
 |
 |  Return an iterator yielding those items of iterable for which function(item)
 |  is true. If function is None, return the items that are true.

和map()函数类似,filter()也是接收一个函数和一个序列作为参数,和map() 不同的是,filter把传入的函数依次作用于序列中的每一个元素,并根据其返回值是True 还是 False 来决定是否保留该元素,达到过滤的效果。

下面举例说明:

从一个list文件列表中筛选出已 .py 结尾的文件,文件列表如下:

files = ["report.py","log.txt", "logger.py",
"config.txt", "main.py"]

首先定义一个函数,其功能是根据传入的文件判断

>>> def is_python_file(file_name):
...     if file_name.endswith(".py"):
...             return True
...     else:
...             return False
...

应用filter函数

>>> list(filter(is_python_file, files))
['report.py', 'logger.py', 'main.py']

以上就达到了筛选的功能,很牛吧,不用自己再写一个 for 循环进行判断了。

第一个参数传入 is_python_file 函数对象

第二个参数传入 序列 files列表

多说一句,有的小伙伴对传入的参数函数对象(没加括号)可能有疑惑,如果函数加(),表示函数执行的结果传入 filter

如果感觉定义一个简单的函数麻烦,我们可以使用匿名函数lambda

lambda f:f.endswith(".py")

>>> list(filter(lambda f:f.endswith(".py"), files))
['report.py', 'logger.py', 'main.py']

其实还可以使用列表推导式

>>> [ f for f in files if f.endswith(".py") ]
['report.py', 'logger.py', 'main.py']

python中其他的高阶函数使用方式也是类似的,比如sorted、reduce、reversed。内置常用高阶函数就分享到这里啦,更多分享请关注微信公众号

最新文章

  1. C#学习资源
  2. TYVJ P1048 田忌赛马 Label:dp
  3. C#基础静态类的设计
  4. linux 修改IP, DNS 命令
  5. DLNA
  6. The project target (Android 6.0) was not properly loaded或者The rendering target (Android 6.0) is still loading.
  7. 【.net 深呼吸】项目中是否有必要删去多余的引用
  8. javascript : detect at the end of bottom
  9. Linux Centos 6.9中SSH默认端口修改的坑
  10. 教程:安装禅道zentao项目管理软件github上的开发版
  11. hdu 5137(2014广州—最短路)
  12. jsonp 实现前端跨域
  13. Delphi非官方的补丁
  14. Enum扩展特性,代替中文属性
  15. pHP生成唯一单号
  16. freeswitch 获取app和api帮助
  17. Js_字体滚动换颜色
  18. JAVA-找不到元素 'beans' 的声明
  19. AOP中Advice执行两遍的原因
  20. catpcha

热门文章

  1. Java基础---Java 类
  2. 02 Python 函数的一些小笔记
  3. PB数据窗口分页
  4. FFplay源代码分析:整体流程图(仅供参考)
  5. redis有序集合数据类型---sortedset
  6. 优秀的java 社区
  7. Hystrix 用法及注解用法
  8. PCA(Principal Component Analysis)笔记
  9. Go net/http 发送常见的 http 请求
  10. python中数组用法