在Python中编写简单数学计算的最佳实践

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中为简单的数学计算编写代码的最佳实践是什么呢

  1. 优雅/ Python化,
  2. 高效,
  3. 对输入数据的确切数字类型(浮点数与整数)的不确定性等问题进行防弹?

orl*_*rlp 13

  1. 如果您使用Python 2.7,请始终使用from __future__ import division.它消除了很多混乱和错误.

    有了这个,你永远不必担心如果一个除法是一个浮点数,/它将永远是一个浮点数并且//永远是一个整数.

  2. 你应该用你的输入转换float().你只会做一次,而且不会有太大的性能影响.

  3. 我会得到这样的浮点数列表的总和:sum(li, 0.0)但是如果需要精度,则使用math.fsum专门为此创建的.

  4. 最后,你的最后陈述令人困惑.你是说1/((N-1)*x)还是(1/(N-1))*x?在第一种情况下,我会将其写为1 / (x * (N-1))第二种情况x / (N-1).两者都假设3.x风格分裂.

另外,如果你想要一些真正的表现,请考虑numpy.