由于python列表没有实现为数组,如果对于某些大N,我们有:
dic = { 0: 'val0', ................................, N: 'valN' }
lst = ['val0', ......................................., 'valN' ]
对于0< = X< = N,哪个更快?
A) res = dic[X]
B) res = lst[X]
由于
答案 0 :(得分:2)
您可以像这样运行timeit测试:
d={0: 'val0', 1: 'val1', 2: 'val2', 3: 'val3', 4: 'val4', 5: 'val5', 6: 'val6', 7: 'val7', 8: 'val8', 9: 'val9', 10: 'val10'}
l=['val0', 'val1', 'val2', 'val3', 'val4', 'val5', 'val6', 'val7', 'val8', 'val9', 'val10']
import timeit
print(timeit.timeit("""for i in range(11):
d[i]""", globals=globals()))
print(timeit.timeit("""for i in range(11):
l[i]""", globals=globals()))
结果如下:
1.003921410003386
0.9669559969988768
列表索引略快一些。
结果将与N的增加保持平行,这里是1000 N:
d={i:"val%i"%i for i in range(1000)}
l=['val%i'%i for i in range(1000)]
import timeit
print(timeit.timeit("""for i in range(1000):
d[i]""", number = 10000, globals=globals()))
print(timeit.timeit("""for i in range(1000):
l[i]""", number = 10000, globals=globals()))
结果为:
0.7665060800063657
0.5568666460021632
列表索引仍然更快。