如何在列表,字典,集合中,根据条件筛选数据 -- Python数据结构与算法相关问题与解决技巧

 

实际案例:

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已经消耗掉,需要重新创建

 

 总结:

  推荐列表解析,更加简单,无需创建函数对象,速度更快

 

 字典:

 

 

 

 

集合

 

posted @ 2019-07-22 22:17  goddog1024  阅读(382)  评论(0编辑  收藏  举报