【问题标题】:Improving a convoluted math function in python改进python中的复杂数学函数
【发布时间】:2017-05-07 09:41:08
【问题描述】:

我想简化下面的代码:

def function(data):
ss, s, n = reduce(lambda a, b: map(sum, zip(a,b)), [(x*x, x, 1) for x in data])
return (ss - s*s/n) / n

到目前为止,我已经计算出 ss、s 和 n 分别是数据中的平方项之和、数据中的项之和以及数据中的项数。知道了这一点,我将 return 语句简化为 (Avg. of squared terms) - (Avg. squared)。有没有更好的方法来简化代码并获得相同的输出?提前致谢

【问题讨论】:

  • 该代码有什么问题?你认为什么更简单?你明白它现在的作用了吗?

标签: python function math statistics average


【解决方案1】:

上述代码的初学者友好实现将是

def function(data):
#get sum of squares
    sum_of_squares = sum(i*i for i in data)
#get sum
    sum_of_items = sum(data)
#total elements
    total_elements = len(data)
#same func

【讨论】:

  • sum(i*i for i in data) 更快,因为它在计算总和之前不会创建列表。
  • 当然,请参阅编辑。 sum 的参数在这里被认为是生成器理解吗?我对缺少括号等感到有点困惑
  • 感谢大家的帮助 - 非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
  • 2021-02-28
相关资源
最近更新 更多