尝试评估in
语句的性能:set
和list
。我知道我可以用模块time
来做,但我想尝试timeit
模块。 所以我的代码是未来:通过timeit模块对列表进行评估的奇怪结果
from timeit import Timer
def func_to_test(val, s):
return val in s
if __name__ == "__main__":
val = 346
n = 100000
s = set([x for x in range(n)])
l = [x for x in range(n)]
list_timer = Timer("func_to_test(%s, %s)" % (val, l), "from __main__ import func_to_test")
set_timer = Timer("func_to_test(%s, %s)" % (val, s), "from __main__ import func_to_test")
print(list_timer.timeit(100))
print(set_timer.timeit(100))
输出是:
0.1953735960000813
0.6675883569996586
但为什么in
语句list
“有” 比set
更好的性能? 我知道这不是,但为什么有timeit
模块的这些结果?
尝试使用更大的N,在这种情况下,设定恒定因素可能只是有点高,所以不会比l对于增长较慢小号n – Natecat