Элегантный механизм для определения наименьшего числа, но с сохранением знака в Python - PullRequest
2 голосов
/ 17 ноября 2011

Мне нужно 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

P.S. Мне все равно, какой знак представлен, когда есть связи с равной величиной.

1 Ответ

15 голосов
/ 17 ноября 2011

Вы можете использовать key именованный параметр min:

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

См. Также: документация для встроенной функции min.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...