【发布时间】:2015-06-04 02:18:42
【问题描述】:
这很有趣; list() 强制迭代器获取实际列表比 [x for x in someList] 快得多(理解)。
这是真的还是我的测试太简单了? 下面是代码:
import time
timer = time.clock()
for i in xrange(90):
#localList = [x for x in xrange(1000000)] #Very slow, took me 6.8s
localList = list(xrange(1000000)) #Very fast, took me 0.9s
print localList[999999] #make sure list is really evaluated.
print "Total time: ", time.clock() - timer
【问题讨论】:
-
Python 3.4 对于 10^6 列表,使用
timeit提供 5.5s 和 3.6s。 -
@user5061:如果包装在一个函数中并使用本地变量,这里的时间会好很多。在 Python 3 中,列表推导式有自己的作用域(如生成器表达式),并且局部变量更快。
标签: python performance list list-comprehension python-2.x