Алгоритмы обработки данных

Подсчёт и поиск минимума и максимума

Содержание курса

Встроенные функции 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() другой контракт — запомните это как правило.

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