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.
Расширенные примеры
Сравнение сложных структур
people = [{'name': 'Анна', 'age': 25}, {'name': 'Иван', 'age': 30}]
oldest = max(people, key=lambda x: x['age'])
print(oldest){'name': 'Иван', 'age': 30}Несколько итераторов
list1 = [1, 5, 3]
list2 = [2, 4, 6]
print(max(list1 + list2))6
Работа с кортежами
pairs = [(1, 'z'), (2, 'a'), (1, 'a')]
print(max(pairs))(2, 'a')
Специальные объекты
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
Лексикографическое сравнение строк без учета регистра
words = ['Яблоко', 'арбуз', 'Груша']
print(max(words, key=str.lower))Яблоко
Поиск самого длинного слова и его длины
sentence = 'Функция max возвращает максимальный элемент'
words = sentence.split()
longest = max(words, key=len)
print(f'Слово: {longest}, Длина: {len(longest)}')Слово: максимальный, Длина: 11