实际案例
- 过滤掉列表[3, 9, -1, 10, -2, 20, ...]中的负数
- 筛选出字典{'LiLei':79, 'Jim':88, 'Lucy':92, ...}中值高于90的项
- 筛选出集合{77, 89, 32, 20, ...}中能被3整除的元素
解决方案
列表
filter函数
filter(lambda x:x>0, data)
列表解析
[x for x in data if x>=0]
字典
字典解析
{k:v for k, v in d.iteritems() if v>90}
集合
集合解析
{x for x in s if x%3 == 0}
以上解决方法对应上述问题
补充代码
生成一个范围随机数列表
from random import randint
list1 = [randint(-10,10) for x in range(10)]
使用timeit对第一个问题的两种解决方法做一个运行时间对比,发现列表解析的方法是要优于filter函数的。并且这两种方式,都要优于通过普通迭代的方法。
生成一个范围随机数字典
dict1 = {k:radint(60, 100) for k in range(1, 21)}
大家加油
网友评论