实际案例:
1.过滤掉列表 [3,9,-1,10,20,-2..]的负数
2.筛出字典{'LiLei':79,'Jim':88,'Lucy':92...}中值高于90的项
3.筛出集合 {77,89,32,20..}中能被3整出的元素
---最通用方法,FOR循环迭代,加上if判断进行过滤
例如:
这样写的问题: 在Python里显得很啰嗦,效率也很差!
解决方案---
列表
列子:
列表解析:
'''
filter函数
filter(,)接收2个参数,
第一个,传入一个过滤函数,通常用lambda创建一个匿名函数
过滤函数,接受一个参数x,这个x就是每次在列表中,迭代出的元素
返回一个布尔值,布尔值为假,元素就被抛弃掉
第二个参数就是要过滤的列表
filter
在python2.7中,会直接返回一个列表
在python3中,会返回一个生成器对象
如果python3实现正确结果放在一个列表中,需要:
把生成器对象,直接传给列表构造器
**生成器对象是一次性的,如果next已经消耗掉,需要重新创建
总结:
推荐列表解析,更加简单,无需创建函数对象,速度更快
字典:
集合