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.
    """

filter()函数用于过滤序列。

filter(返回布尔值的函数,可迭代对象)

map()类似,filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

例如,在一个list中,删掉偶数,只保留奇数,可以这么写:

def is_odd(n):
    return n % 2 == 1
s = filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])
print(list(s))
# 结果: [1, 5, 9, 15]

巧妙运用lambda表达式写成这样才好看:

s = filter(lambda n: n % 2 == 1, [1, 2, 4, 5, 6, 9, 10, 15])
print(list(s))
# 结果: [1, 5, 9, 15]

把一个序列中的空字符串删掉,可以这么写:

def not_empty(s):
    return s and s.strip()
s = filter(not_empty, ['A', '', 'B', None, 'C', '  '])
print(list(s))
# 结果: ['A', 'B', 'C']

用lambda表达式写成这样:

s = filter(lambda n: n and n.strip(), ['A', '', 'B', None, 'C', '  '])
print(list(s))
# 结果: ['A', 'B', 'C']

  

最新文章

  1. 一年之计在于春,2015开篇:PDF.NET SOD Ver 5.1完全开源
  2. JAVA-集合作业-已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。采用List集合和随机数
  3. [Tools] Eclipse更改类注释自动生成模板
  4. dpkg命令的用法
  5. if else 语句练习
  6. 深度学习研究理解5:Visualizing and Understanding Convolutional Networks(转)
  7. 开源项目:网页实时通信WebRTC
  8. cocos2dx 2.x版本:简化提炼tolua++绑定自定义类到lua中使用
  9. (转) MFC的入口点与消息循环,消息映射
  10. 無心插柳的Linux學習者代言人——蔡德明
  11. javascript 笔试题之删除数组重复元素
  12. 将Oracle JDBC驱动库安装到本地仓库
  13. Wikioi 1294 全排列
  14. 仿vue实现简易版mvvm双向绑定
  15. mac下怎么删除隐藏文件比如 .Trashes文件
  16. BZOJ_2303_[Apio2011]方格染色 _并查集
  17. omitting directory `folder/'
  18. 周强、张季跃,马凯军《面向对象与程序设计Java》第十四周学习总结
  19. day-12函数对象
  20. selenium+python之 辨识alert、window以及操作

热门文章

  1. IOS开发之不同版本适配问题2(#ifdef __IPHONE_7_0)(转载)
  2. gcc g++ 参数介绍
  3. PHP学习笔记03——函数
  4. CocoStudio UI 编辑器的使用
  5. Mac下配置环境变量
  6. 【英语】Bingo口语笔记(5) - 英式和美式英语的发音区别
  7. MySQL内存表-临时表
  8. 【转】Eclipse+PyDev 安装和配置
  9. std::sort引发的core
  10. [转]linux之more命令