平方`*args`的简单方法

Easy way to square `*args`

下面的代码打印 7+6+3 (=4) 的平方根。

import math

def notdist(*args):
    return math.sqrt(sum(args))
    
print(notdist(7,6,3))

我想要这样的评论:

import math

def dist(*args):
    return math.sqrt(sum(args**2))
    
print(dist(7,6,3))

用于计算与 O(0,0) 的距离,但这给出了错误:

unsupported operand type(s) for ** or pow(): 'tuple' and 'int'

我知道我可以使用另一个代码,例如:

import math

def uglydist(*args):
    s = 0
    for i in range(len(args)):
        s = s + args[i]**2
    return math.sqrt(s)

print(uglydist(3,4)) # = 5

但我想知道修改第一个代码是否是一种简单的方法。类似于第二个代码,但正确。

提前致谢!

也许里面有一个生成器表达式 sum:

def dist(*args):
    return math.sqrt(sum(x**2 for x in args))

像这样使用 for 会更好,但我认为这也不是您想要的

import math

def NotSoGoodDist(*args):
    s = 0
    for i in args:
        s = s + i**2
    return math.sqrt(s)

print(NotSoGoodDist(3,4)) # = 5