优雅机制在Python中确定最小绝对值但保留符号的数字

3 投票
1 回答
1002 浏览
提问于 2025-04-17 06:28

我有一个用Python写的需求,就是要找出绝对值最小的数字,同时保留它的符号。下面是我现在用来实现这个功能的代码。请问有没有更优雅的方法,无论是从数学上还是Python的角度来看?这个函数在我的应用中使用得非常频繁,所以如果能在解释执行和数学计算上尽量高效就更好了。

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

另外,我对绝对值相等时显示哪个符号并不在意。

1 个回答

16

你可以使用名为 key 的参数来帮助 min 函数:

>>> min(-5, -10, 10, -2, -1, key=abs)
-1

另外,你可以查看这个链接了解更多:内置函数 min 的文档

撰写回答