Функция max в питоне

Функция max в питоне

Я пытаюсь понять, как это работает:

Это действительно классная функция, и я хочу лучше понять.
На основе документации

min (iterable [, key]) Верните наименьший элемент в итерабельный или самый маленький из двух или более аргументов. Необязательный ключевой аргумент указывает функцию упорядочения с одним аргументом, подобную той, которая используется для list.sort(). Ключевой аргумент, если он указан, должен быть в форме ключевого слова (например, min (a, b, c, key = func)).

Где я могу узнать больше о доступных функциях? В словаре есть все словарные методы?

Изменить: я наткнулся на это сегодня:

Ищите информацию о доступных функциях ключевых слов для min/max

2 ответа

4 7bStan [2017-06-14 14:13:00]

Код, который вы написали,

на самом деле это работает с функцией min . так, что делает мин?

С одним итерабельным аргументом верните его самый низкий элемент. С двумя или более аргументами возвращаем самый низкий аргумент.

Ключ здесь используется для передачи пользовательской функции сравнения.

Пример: вывод max по длине списка, где arg1, arg2 — оба списка.

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

Обратите внимание, что лямбда эквивалентна тому, что вы положили в оператор возврата def. Таким образом, вы не можете использовать утверждения внутри лямбда, допускаются только выражения.

поэтому функции в основном зависят от итерации и прохождения критериев для сравнения.

Теперь в вашем примере вы повторяете свой словарь. И в этом ключе вы используете метод get .

Метод get() возвращает значение для данного ключа. Если ключ недоступен, возвращается значение по умолчанию Нет.

Как здесь, никаких аргументов в методе get нет, он просто выполняет итерации по значениям словаря. И, таким образом, min дает ключ, имеющий минимальное значение.

Для max(enumerate(array_x), key=operator.itemgetter(1)) мы хотим сравнить значения массива вместо их индексов. Итак, мы перечислили массив.

enumerate (thing), где вещь либо является итератором, либо последовательностью, возвращает итератор, который будет возвращать (0, вещь [0]), (1, вещь 1), (2, вещь [2])

теперь мы использовали функцию itemgetter модуля оператора. operator.itemgetter(n) создает вызываемый, который принимает итерируемый объект (например, список, кортеж, набор) в качестве входных данных и извлекает из него n-й элемент.

вы также можете использовать функцию лямбда здесь, например

Таким образом, диапазон функций в key почти доходит до использования. мы можем использовать множество функций, но единственным мотивом является то, что это критерии для сравнения.

Читайте также:  Портативный усилитель звука для колонок

Представьте, что у вас есть объекты с некоторым атрибутом, который вы хотите использовать для получения минимального значения:

Это даст вам объект с наименьшим атрибутом something .

То же самое существует, например, в sorted() , поэтому вы можете легко отсортировать значение, полученное из объекта. Представьте, что у вас есть список людей и вы хотите сортировать по имени, а затем фамилию:

описание

Метод макс () возвращает максимальное значение данного параметра, последовательности параметров.

грамматика

Ниже приведен метод синтаксиса макс ():

параметры

  • х — числовое выражение.
  • у — числовое выражение.
  • г — числовое выражение.

Возвращаемое значение

примеров

Ниже приведен пример использования метода максимального ():

После выполнения приведенного выше примера вывода является:

Я пришел из фона ООП и пытался узнать python. Я использую функцию max , которая использует выражение лямбда, чтобы вернуть экземпляр типа Player , имеющий максимум totalScore среди списка players .

Функция корректно возвращает экземпляр типа Player с максимальным значением totalScore . Я запутался в следующих трех вещах:

  • Как работает функция max ? Какие аргументы он принимает? Я посмотрел документацию, но не понял.
  • Что такое ключевое слово key в функции max? Я знаю, что он также используется в контексте функции sort
  • Значение выражения лямбда? Как их читать? Как они работают?

Все это очень ноубийские концептуальные вопросы, но поможет мне понять язык. Это поможет, если вы сможете привести примеры для объяснения. Благодаря

lambda — это анонимная функция, она эквивалентна:

Теперь max становится:

Но поскольку операторы def являются составными, их нельзя использовать там, где требуется выражение, поэтому иногда используются lambda выражения.

Обратите внимание, что lambda эквивалентна тому, что вы бы указали в операторе return для def . Таким образом, вы не можете использовать операторы внутри lambda , разрешены только выражения.

Что делает max ?

С одним итеративным аргументом верните его самый большой элемент. С двумя или более аргументами верните самый большой аргумент.

Таким образом, он просто возвращает объект, который является самым большим.

Как работает key ?

По умолчанию в Python 2 key сравнивает элементы на основе набора правил, основанных на типе объектов (например, строка всегда больше целого числа).

Чтобы изменить объект перед сравнением или сравнить по определенному атрибуту/индексу, вы должны использовать key аргумент.

Простой пример. Предположим, у вас есть список чисел в строковой форме, но вы хотите сравнить эти элементы по их целочисленным значениям.

Читайте также:  Войти в укрнет вход на почту

Здесь max сравнивает элементы, используя их исходные значения (строки сравниваются лексикографически, поэтому в качестве результата вы получите ‘2’ ):

Для сравнения элементов по их целочисленному значению используйте key с простой lambda выражением:

Пример 2: применение max к списку кортежей.

По умолчанию max сравнивает элементы по первому индексу. Если первый индекс совпадает, тогда он будет сравнивать второй индекс. Как и в моем примере, все элементы имеют уникальный первый индекс, поэтому вы получите ответ:

Но что, если вы хотите сравнить каждый элемент по значению с индексом 1? Просто: используйте lambda :

Сравнение элементов в итерируемом объекте, который содержит объекты различного типа:

Список со смешанными предметами:

Но это работает, так как мы сравниваем целочисленную версию каждого объекта:

Сильно упрощенная версия max :

Он ищет "самый большой" элемент в истребителе. Я буду считать, что вы может посмотреть, что это такое, но если нет, это то, что вы можете перебрать, то есть список или строку.

Что такое ключ ключевого слова в функции max? Я знаю, что он также используется в контексте функции сортировки

Key — это лямбда-функция, которая сообщает max , что объекты в iterable больше других. Скажем, если бы вы сортировали какой-то объект, который вы создали сами, а не что-то очевидное, например целые числа.

Значение лямбда-выражения? Как их читать? Как они работают?

Такой вопрос больше. Проще говоря, лямбда — это функция, которую вы можете пройти, и использовать ее в других частях кода. Возьмите это, например:

Это принимает два объекта: a и b и функцию f . Он вызывает f() для каждого объекта, а затем добавляет их вместе. Итак, посмотрите на этот вызов:

sum() принимает 2 и вызывает на нем лямбда-выражение. Итак, f(a) становится 2 * 2 , который становится 4. Затем он делает это для b и добавляет их вместе.

В не столь простых терминах лямбды исходят из лямбда-исчисления, что является идеей функции, возвращающей функцию; очень крутая математическая концепция для выражения вычислений. Вы можете прочитать об этом здесь, а затем на самом деле понять его здесь.

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

max (iterable [, key])
max (arg1, arg2, * args [, key])
Возврат самый большой элемент в итерабельном или самом большом из двух или более аргументов.

Если предоставлен один позиционный аргумент, iterable должен быть непустым iterable (например, непустая строка, кортеж или список). Самый большой предмет в возвращаемом истребителе. Если два или более позиционных аргумента при условии, что возвращается наибольший из позиционных аргументов.

Читайте также:  Не запускается блютуз на ноутбуке

Необязательный ключевой аргумент указывает функцию упорядочения с одним аргументом как и для list.sort(). Ключевой аргумент, если он поставлен, должен быть в форме ключевого слова (например, max (a, b, c, key = func)).

Это говорит о том, что в вашем случае вы предоставляете список, в данном случае players . Затем функция max будет перебирать все элементы в списке и сравнивать их друг с другом, чтобы получить "максимум".

Как вы можете себе представить, сложный объект, такой как player , определяющий его значение для сравнения, является сложным, поэтому вам предоставляется аргумент key , чтобы определить, как функция max будет определять значение каждого player . В этом случае вы используете функцию лямбда, чтобы сказать "для каждого p в players получить p.totalscore и использовать это как его значение для сравнения".

max используется для получения максимума из iterable .

Итераторами могут быть списки, кортежи, объекты dict и т.д. Или даже настраиваемые объекты, как в примере, который вы указали.

Итак, key=func в основном позволяет нам передать необязательный аргумент key функции, на основе которой отсортированные данные итератора/аргументы сортируются и возвращается максимум.

lambda — ключевое слово python, которое действует как псевдофункция. Итак, когда вы передаете ему объект player , он вернет player.totalScore . Таким образом, итерабельность, передаваемая функции max , будет сортироваться в соответствии с key totalScore объектов player , предоставленных ей, и вернет player , у которого максимум totalScore .

Если аргумент key не указан, максимальный возвращается в соответствии с порядками Python по умолчанию.

max встроена функция, которая принимает первый аргумент a iterable (например, список или кортеж)

ключевой аргумент key имеет значение по умолчанию None , но он принимает функцию для оценки, рассматривает ее как оболочку, которая оценивает итерацию на основе функции

Рассмотрим этот пример словаря:

Как вы можете видеть, если вы передаете только итерацию без kwarg (функция key ), она возвращает максимальное значение ключа (в алфавитном порядке)

Ex. Вместо того, чтобы находить максимальное значение ключа в алфавитном порядке, вам может потребоваться найти максимальный ключ по длине ключа:

в этом примере лямбда-функция возвращает длину ключа, которая будет итерации, поэтому при оценке значений вместо рассмотрения в алфавитном порядке она будет отслеживать максимальную длину ключа и возвращает ключ с максимальной длиной

в этом примере лямбда-функция возвращает значение соответствующего словарного ключа с максимальным значением

Ссылка на основную публикацию
Adblock detector