Max: примеры (PYTHON)

Поиск максимальных значений с помощью функции max в Python
Раздел: Встроенные функции, Агрегация
max(iterable[, key] or [arg1, arg2,...]): Any

Функция max в Python

Функция max возвращает максимальный элемент из переданных аргументов или из элементов итерируемого объекта. Она применяется для поиска наибольшего значения в наборе данных.

Синтаксис:
max(iterable, *[, key, default]) или max(arg1, arg2, *args[, key])

Параметры:
1. iterable (обязательный, если не переданы позиционные аргументы): итерируемый объект (список, кортеж, строка и т.д.).
2. arg1, arg2, ... args: позиционные аргументы для сравнения (от двух и более).
3. key (необязательный): функция с одним аргументом, применяемая к каждому элементу для определения ключа сравнения.
4. default (необязательный): значение, возвращаемое если итерируемый объект пуст. Если не задано, вызывается исключение ValueError.

Возвращаемое значение:
Наибольший элемент согласно заданным критериям сравнения. При сравнении строк учитываются коды символов (лексикографический порядок).

Основные примеры

Сравнение чисел

print(max(5, 10, 2))
10

Работа со списком

numbers = [3, 1, 7, 4]
print(max(numbers))
7

Использование ключа key

words = ['яблоко', 'груша', 'арбуз']
print(max(words, key=len))
яблоко

Параметр default

empty_list = []
print(max(empty_list, default='список пуст'))
список пуст

Сравнение строк

print(max('abc', 'abd', 'aba'))
abd

Похожие функции в Python

min – находит минимальный элемент. Используется аналогично max с теми же параметрами.

sorted – сортирует итерируемый объект. Позволяет получить отсортированную последовательность, откуда можно извлечь максимальный элемент как последний.

heapq.nlargest – эффективно находит N наибольших элементов в больших коллекциях. Предпочтительнее max при поиске нескольких значений.

statistics.median – находит медиану, что полезно для анализа данных, устойчивого к выбросам.

Аналоги в других языках

JavaScript

Math.max(5, 10, 2);
10

Не работает с массивами напрямую, нужно использовать спред-оператор: Math.max(...[5,10,2]).

PHP

echo max(5, 10, 2);
10

Есть отдельная функция max для массивов: max([5,10,2]).

Java

Collections.max(Arrays.asList(5, 10, 2));

Требует объекты, реализующие Comparable.

SQL

SELECT MAX(column) FROM table;

Агрегатная функция, работает с наборами строк.

C#

new[] {5, 10, 2}.Max();
10

Lua

math.max(5, 10, 2)
10

Golang

import "math"
math.Max(5.0, 10.0)

Работает только с двумя float64.

Kotlin

listOf(5, 10, 2).max()
10

Типичные ошибки

Пустой итератор без default

max([])
ValueError: max() arg is an empty sequence

Несравнимые типы данных

max([1, 'a'])
TypeError: '>' not supported between instances of 'str' and 'int'

Некорректный ключ key

max([1, 2], key='не функция')
TypeError: 'str' object is not callable

Один позиционный аргумент

max(5)
TypeError: 'int' object is not iterable

Изменения в версиях Python

В Python 3.4 добавлен необязательный параметр default, позволяющий избежать ValueError при работе с пустыми последовательностями.

В Python 3.8 улучшена обработка ключа key для объектов namedtuple.

Расширенные примеры

Сравнение сложных структур

Пример python
people = [{'name': 'Анна', 'age': 25}, {'name': 'Иван', 'age': 30}]
oldest = max(people, key=lambda x: x['age'])
print(oldest)
{'name': 'Иван', 'age': 30}

Несколько итераторов

Пример python
list1 = [1, 5, 3]
list2 = [2, 4, 6]
print(max(list1 + list2))
6

Работа с кортежами

Пример python
pairs = [(1, 'z'), (2, 'a'), (1, 'a')]
print(max(pairs))
(2, 'a')

Специальные объекты

Пример python
class Product:
    def __init__(self, name, price):
        self.name = name
        self.price = price
    def __repr__(self):
        return f'{self.name}: {self.price}'

products = [Product('Молоко', 80), Product('Хлеб', 50)]
print(max(products, key=lambda p: p.price))
Молоко: 80

Лексикографическое сравнение строк без учета регистра

Пример python
words = ['Яблоко', 'арбуз', 'Груша']
print(max(words, key=str.lower))
Яблоко

Поиск самого длинного слова и его длины

Пример python
sentence = 'Функция max возвращает максимальный элемент'
words = sentence.split()
longest = max(words, key=len)
print(f'Слово: {longest}, Длина: {len(longest)}')
Слово: максимальный, Длина: 11

питон max function comments

En
Max Return largest element