Python中的经验法则可以解释为什么*运算符比**运算符运行得更快。
- 论坛
- Python中的经验法则可以解释为什么*运算符比**运算符运行得更快。
6 浏览
Python中的经验法则可以解释为什么*运算符比**运算符运行得更快。
我的问题既是具体的(见示例),又是一般性的。我正在寻找编写运行速度快的Python代码的最佳实践。在评估表达式或构造语句的两种或更多方式中,我希望在进行timeit
比较测试之前能有一个有根据的猜测,哪种方式会更快运行。\n例如:\n
xx = [1,2,3,4,5] x_bar = int(sum(xx)/len(xx)) # or = np.mean(xx) x_c = [int(x_i - x_bar) for x_i in xx] TSS = sum([x_i*x_i for x_i in x_c])
\n我曾尝试通过将x_i*x_i
改为x_i**2
来加快速度。但是,如果我正确地阅读结果的话,实际上它慢了约3倍:\n
%%timeit sum([x_i*x_i for x_i in x_c]) # 670 ns ± 19 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) %%timeit sum([x_i**2 for x_i in x_c]) # 1.8 µs ± 120 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
\n解释为什么对于*
运算符和**
运算符而言这是真实的将会很有帮助。更有帮助的是提供原则、经验法则和资源的建议,这些将帮助我识别改进代码的机会。有什么建议吗?