我的印象是使用 sum 构造比运行 for 循环快得多。然而,在下面的代码中,for 循环实际上运行得更快:
import time
Score = [[3,4,5,6,7,8] for i in range(40)]
a=[0,1,2,3,4,5,4,5,2,1,3,0,5,1,0,3,4,2,2,4,4,5,1,2,5,4,3,2,0,1,1,0,2,0,0,0,1,3,2,1]
def ver1():
for i in range(100000):
total = 0
for j in range(40):
total+=Score[j][a[j]]
print (total)
def ver2():
for i in range(100000):
total = sum(Score[j][a[j]] for j in range(40))
print (total)
t0 = time.time()
ver1()
t1 = time.time()
ver2()
t2 = time.time()
print("Version 1 time: ", t1-t0)
print("Version 2 time: ", t2-t1)
输出是:
208
208
Version 1 time: 0.9300529956817627
Version 2 time: 1.066061019897461
难道我做错了什么?有没有办法更快地做到这一点?
(请注意,这只是我设置的一个演示,在我的实际应用中,分数不会以这种方式重复)
一些附加信息:它在 Python 3.4.4 64 位、Windows 7 64 位和 i7 上运行。