不使用lambda:
from operator import mulreduce(mul, list, 1)
更好,更快。使用python 2.7.5
from operator import mulimport numpy as npimport numexpr as ne# from functools import reduce # python3 compatibilitya = range(1, 101)%timeit reduce(lambda x, y: x * y, a) # (1)%timeit reduce(mul, a) # (2)%timeit np.prod(a)# (3)%timeit ne.evaluate("prod(a)") # (4)在以下配置中:
a = range(1, 101) # Aa = np.array(a) # Ba = np.arange(1, 1e4, dtype=int) #Ca = np.arange(1, 1e5, dtype=float) #D
python 2.7.5的结果
| 1 | 2 | 3 | 4 |-------+-----------+-----------+-----------+-----------+ A 20.8 µs 13.3 µs 22.6 µs 39.6 µs B 106 µs 95.3 µs 5.92 µs 26.1 µs C 4.34 ms 3.51 ms 16.7 µs 38.9 µs D 46.6 ms 38.5 ms 180 µs 216 µs
结果:np.prod如果np.array用作数据结构,则速度最快(小型阵列为18x,大型阵列为250x)
使用python 3.3.2:
| 1 | 2 | 3 | 4 |-------+-----------+-----------+-----------+-----------+ A 23.6 µs 12.3 µs 68.6 µs 84.9 µs B 133 µs 107 µs 7.42 µs 27.5 µs C 4.79 ms 3.74 ms 18.6 µs 40.9 µs D 48.4 ms 36.8 ms 187 µs 214 µs
python 3更慢吗?



