集理解与元组理解与列表理解的时间复杂度

时间:2018-11-09 04:58:57

标签: python list-comprehension set-comprehension

我正在学习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的理解速度最快,因为它没有setlist的开销。 hash的计算和set中的重复删除,或list中元素的顺序保留。

但是我不明白set comprehensionlist comprehension花费的时间几乎相等。我想知道为什么set comprehension并不比list comprehension中的set慢很多,编译器具有计算每个条目的hash value的开销,并且不必list comprehension时检查是否有重复。

提前感谢您的宝贵时间。

0 个答案:

没有答案