统一使用python3.4以上版本
实际案例:
- 过滤列表[3,9,-1,10,-20,-2...]中的负数
- 筛出字典{'LiLei':79,'Jim':88,'Lucy':92...}中值高于90的项
- 筛出集合{77,89,32,20...}中能被3整除的元素
List:
首先生成随机的列表:
from random import randint
data = [randint(-10,10) for _ in range(10)]
普通做法1:
list_result = list()
for _ in data:
if _ >= 0:
list_result.append(_)
做法2:filter函数
list(filter(lambda x:x>=0,data))
做法3:列表解析
[x for x in data if x>=0]
时间比较:
from timeit import timeit
timeit('list(filter(lambda x:x>=0,{0}))'.format(data))
执行时间:
1.0598646074734006
timeit('[x for x in {0} if x>=0]'.format(data))
执行时间:
0.34205928907095995
列表解析更快一些,首选的方式是列表解析。而后两种方式都远快于第一种迭代的方案。
Dict
随机创建班级分数
data = {i:randint(60,100) for i in range(1,21)}
做法:字典解析
{k:v for k,v in data.items() if v>90}
注:
Python3.5中:iteritems变为items
Set
随机生成集合
data = {randint(-10,10) for _ in range(10)}
集合解析:
{x for x in data if x % 3 == 0}
网友评论