這很有趣; list()
強制迭代器獲取實際列表的速度比[x for x in someList]
(理解)快得多。Python列表()vs列表理解構建速度
這是真的還是我的測試太簡單了? 下面是代碼:
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
對於10^6列表,Python 3.4給出5.5s vs 3.6s與'timeit'。 – 2015-03-30 22:06:25
@ user5061:如果使用函數包裝並使用本地語言,則此處的計時會更好。在Python 3中,列表理解可以獲得自己的作用域(比如生成器表達式),而本地代碼更快。 – 2015-03-31 08:27:44