我有一个Pythonic需要根据绝对值确定最小数量,但保留其符号.下面是我现在用来执行此操作的代码.是数学还是蟒蛇更优雅的机制?这个函数是我的应用程序中最常用的函数之一,因此如果它在解释开销和数学计算方面尽可能高效,那就太好了.
def minmag(*l):
la=map(abs,l) #store magnitudes
v=min(map(abs,l)) #find minimum magnitude
return math.copysign(v,l[la.index(v)]) #put the sign back
print minmag(5,10) #prints 5
print minmag(-5,-10) #prints -5
print minmag(-5,-10,10,-2,-1) #prints -1
Run Code Online (Sandbox Code Playgroud)
PS我不关心当存在相同幅度的关系时会出现哪个符号.
ham*_*mar 15
您可以使用以下key命名参数min:
>>> min(-5, -10, 10, -2, -1, key=abs)
-1
Run Code Online (Sandbox Code Playgroud)
另请参阅:内置函数的文档min.