2010-02-11 3 views
3

ОК, у меня есть эта простая функция, которая находит элемент списка, который максимизирует значение другой положительной функции.больше pythonic способ найти элемент в списке, который максимизирует функцию

def get_max(f, s): 
    # f is a function and s is an iterable 

    best = None 
    best_value = -1 

    for element in s: 
     this_value = f(element) 
     if this_value > best_value: 
      best = element 
      best_value = this_value 
    return best 

Но я нахожу это очень долго для простой работы. На самом деле это напоминает мне Java (brrrr). Может ли кто-нибудь показать мне более питоновский и чистый способ сделать это?

Спасибо!
Manuel

+0

Помимо стиля, если присмотреться достаточно, то вы заметите, что несколько ошибок в этой реализации. –

ответ

14
def get_max(f, s): 
    return max(s, key=f) 
+1

+1 трудно сделать лучше обычного старого 'max()' –

+0

True! Но я не знал, что вы можете передать этот волшебный ключевой аргумент. Благодаря! –

+0

Ссылка: http://docs.python.org/library/functions.html#max –

Смежные вопросы