在列表,字典,集合中根据条件筛选数据,本实例介绍在Python中如何高效、简洁地列表,字典,集合中根据条件筛选数据。
实际案例
- 过滤掉列表
[3,9,-1,10,20,-2]
中的负数 -
筛出字典
{‘LiLei’:79, 'Jim':88, 'Lucy':92}
中值高于90的项 -
筛出集合
{77,89,32,20}
中能被3整除的元素
解决方案
通用的解法是迭代加上条件判断
data = [1,5,-3,-2,6,0,9]
res = []
for x in data:
if x >= 0:
res.append(x)
print(res)
更高级的解决方案
列表
filter函数:filter(lambda x:x>=0, data)
示例程序如下:
列表解析: [x for x in data if x>=0]
对于Filter函数和列表解析谁更好的,我们通过一个实验演示说明。
从上述实验可以看出,列表解析性能会更好。
字典
字典解析:{k:v for k,v in data.iteritems() if v > 90}
集合
集合解析: {x for x in s if x % 3 == 0}