函数输出的timeit的时间反而少
来源:2-1 如何在列表, 字典, 集合中根据条件筛选数据

慕盖茨3698359
2016-10-27
为什么 我的函数反而用的时间更少
from random import randint from timeit import timeit data = [randint(-10,10) for _ in xrange(10)] def f(): l = [] for i in data: if i >= 0: l.append(i) return l print timeit('filter(lambda x:x>=0,data)','from __main__ import data') print timeit('[i for i in data if i>=0]','from __main__ import data') print timeit('f','from __main__ import f,data')
写回答
1回答
-
程序员硕
2016-10-27
你应该是在python3下运行的吧.
python3中filter函数并不返回一个列表,而是一个可迭代对象.所以比列表解析要快, 省去分配列表并把元素插入的过程.
00
相似问题