jan*_*jan 4 python math coding-style python-2.7
我需要在Python 2.7中执行简单的数学计算,包括求和,减法,除法,乘法,数字列表之和等.
我想写出优雅,防弹,高效的代码,但我必须承认我对几件事情感到困惑,例如:
1/(N-1)*x
在我的等式中,我应该只编码1/(N-1)*x
或者可能1.0/(N-1)*x
,1.0/(N-1.0)*x
或者这些的任何其他组合?//
还是/
使用from __future__ import division
?math.fsum()
用于连接浮动列表"是什么?float(x)
操作中降低效率)?那么在Python中为简单的数学计算编写代码的最佳实践是什么呢
orl*_*rlp 13
如果您使用Python 2.7,请始终使用from __future__ import division
.它消除了很多混乱和错误.
有了这个,你永远不必担心如果一个除法是一个浮点数,/
它将永远是一个浮点数并且//
永远是一个整数.
你应该用你的输入转换float()
.你只会做一次,而且不会有太大的性能影响.
我会得到这样的浮点数列表的总和:sum(li, 0.0)
但是如果需要精度,则使用math.fsum
专门为此创建的.
最后,你的最后陈述令人困惑.你是说1/((N-1)*x)
还是(1/(N-1))*x
?在第一种情况下,我会将其写为1 / (x * (N-1))
第二种情况x / (N-1)
.两者都假设3.x风格分裂.
另外,如果你想要一些真正的表现,请考虑numpy.