我整理了四份类似的 list .榜单d
总是比其他榜单花的时间长得多,所有这些榜单花的时间都差不多:
a: 33.5 ms
b: 33.4 ms
c: 36.4 ms
d: 110.9 ms
为什么会这样呢?
测试脚本(Attempt This Online!):
from timeit import repeat
n = 2_000_000
a = [i // 1 for i in range(n)] # [0, 1, 2, 3, ..., 1_999_999]
b = [i // 2 for i in range(n)] # [0, 0, 1, 1, 2, 2, ..., 999_999]
c = a[::-1] # [1_999_999, ..., 3, 2, 1, 0]
d = b[::-1] # [999_999, ..., 2, 2, 1, 1, 0, 0]
for name in 'abcd':
lst = eval(name)
time = min(repeat(lambda: sorted(lst), number=1))
print(f'{name}: {time*1e3 :5.1f} ms')