嘗試評估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