Python中此函数的最短表示

lpl*_*lpl 2 python math

方程

目前我有:

def func(points): #Input is a matrix with n lines and 2 columns.
    centroid = numpy.mean(points, axis=0)
    sum = 0
    for point in points:
        x = point[0] - centroid[0]
        y = point[1] - centorid[1]
        sum += x**2 + y**2
    return math.sqrt(sum)
Run Code Online (Sandbox Code Playgroud)

Kar*_*tel 7

有一个内置的序列求和,称为sum(奇怪的是).我们可以使用生成器理解来创建数据,并将其直接提供给sum函数.从而:

return math.sqrt(sum((p[0]-centroid[0])**2 + (p[1]-centroid[1])**2 for p in points))
Run Code Online (Sandbox Code Playgroud)

  • 回复已删除的评论:非常不同意将公式放在多行上使其更具可读性,尤其是像这样的相当简单和常见的(正交加法).理解是Python的基础,在简单的情况下自己建立一个列表是丑陋的,而且"只应该有一种方法可以做到".无论如何,你打算怎么称呼子表达式?`sum`掩盖了内置,无论如何都远非描述. (3认同)