Подсчёт и поиск минимума и максимума
Содержание курса
Встроенные функции sum(), min(), max() и len()
Для стандартных операций над всем списком Python предлагает четыре встроенные функции, которые избавляют от необходимости писать цикл вручную.
sum() принимает список чисел и возвращает их сумму:
scores = [45, 82, 60, 91, 33, 78]
print(sum(scores)) # 389
Это полный эквивалент ручного цикла с аккумулятором total += score, только без единой строки цикла.
len() возвращает количество элементов в списке:
print(len(scores)) # 6
Если нужно общее число элементов — len() делает это за один вызов. Кстати, len() работает не только со списками — она применима к любой последовательности, в том числе к строкам.
min() и max() возвращают наименьший и наибольший элементы:
temperatures = [18, 7, 23, -3, 11, 15]
print(min(temperatures)) # -3
print(max(temperatures)) # 23
Эти два вызова заменяют весь ручной алгоритм с инициализацией и перебором — Python делает то же самое внутри, но скрыто от нас.
Оба варианта функций принимают либо список, либо несколько аргументов через запятую:
print(min(10, 3, 7)) # 3
print(max(10, 3, 7)) # 10
Важный момент: пустой список.
Если передать пустой список в min() или max(), Python не вернёт ноль или None — он поднимет исключение:
empty = []
print(min(empty)) # ValueError: min() arg is an empty sequence
Это ожидаемое поведение: невозможно найти минимум там, где нет ни одного элемента. Поэтому перед вызовом нужно убедиться, что список не пуст:
if temperatures:
print(min(temperatures))
else:
print("Список пуст")
Проверка if temperatures: возвращает True, если в списке есть хотя бы один элемент, и False для пустого списка — это стандартный способ защититься от ValueError.
sum() и len() на пустом списке не падают: sum([]) возвращает 0, len([]) возвращает 0. Но у min() и max() другой контракт — запомните это как правило.
Четыре функции покрывают большинство базовых операций над целым списком. Вопрос о том, когда их достаточно, а когда всё-таки нужен ручной цикл — следующий шаг.
