0

我正在学习 python 并正在检查timeit模块。我正在尝试与 , 完全相同的事情listsettuple检查所涉及的间接费用。请看一下(IPython shell):-

>>> timeit {x**9 for x in range(100)}
>>> 49.3 µs ± 229 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

>>> timeit (x**9 for x in range(100))
>>> 830 ns ± 6.39 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

>>> timeit [x**9 for x in range(100)]
>>> 45.8 µs ± 346 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

我认为tuple理解是最快的,因为它没有 and 的任何开销setlist例如。hash中的元素的计算和重复删除set或顺序保留list

但我不明白的是set comprehensionlist comprehension花费几乎相同的时间。我想知道为什么aset comprehension并不比list comprehensiona慢很多set,编译器有计算hash value每个条目的开销并检查重复项,而list comprehension不必这样做。

在此先感谢您的时间。

4

0 回答 0