创建列表时,尽可能使用理解式推导,因为它是最快的。但是,看起来并非总是如此。
即使是
In [1]: %timeit -n1000 [0]*1000000
1000 loops, best of 3: 2.3 ms per loop
In [2]: %timeit -n1000 [0 for _ in range(1000000)]
1000 loops, best of 3: 27.1 ms per loop
In [3]: a = np.zeros(1000000, dtype=int)
In [4]: %timeit -n1000 a.tolist()
1000 loops, best of 3: 7.93 ms per loop
即使是
numpy.ndarray.tolist
也无法与乘法相匹配。为什么会这样呢?