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

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

Базовая информация о функции min

Функция min в Python возвращает наименьший элемент из переданных аргументов или минимальный элемент итерируемого объекта. Её используют для сравнения значений, поиска минимального элемента в коллекциях, а также в комбинации с ключевыми функциями для сложных сравнений.

Синтаксис функции имеет две формы:

  1. min(iterable, *[, key, default]) – с одним итерируемым аргументом
  2. min(arg1, arg2, *args[, key]) – с двумя или более позиционными аргументами

Параметры:

  • iterable – итерируемый объект (список, кортеж, строка, словарь и др.).
  • arg1, arg2, ... args – позиционные аргументы для сравнения (минимум два).
  • key – однопараметрическая функция, применяемая к каждому элементу перед сравнением (опционально).
  • default – значение, возвращаемое если итерируемый объект пуст (только для формы с iterable).

Возвращаемое значение: Наименьший элемент среди переданных. При пустом итерируемом объекте без указания default возникает исключение ValueError.

Базовые примеры использования

Работа с различными типами данных и параметрами.

Пример с числами:

print(min(5, 2, 8))
2

Пример со строковыми значениями:

print(min(['apple', 'banana', 'cherry']))
apple

Использование ключевой функции key:

words = ['cat', 'wolf', 'elephant']
print(min(words, key=len))
cat

Применение параметра default:

empty_list = []
print(min(empty_list, default='Нет данных'))
Нет данных

Альтернативные функции в Python

max() – находит максимальный элемент, использует аналогичные параметры. Выбор между min и max зависит от задачи поиска минимального или максимального значения.

sorted() и heapq.nsmallest() – при необходимости получения нескольких минимальных элементов или отсортированной последовательности. Функция sorted возвращает новый отсортированный список, а heapq.nsmallest эффективна для больших данных.

Специализированные методы – например, DataFrame.min() в библиотеке pandas для работы с табличными данными. Используют при анализе данных в структурах DataFrame.

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

JavaScript: Math.min() работает только с числами, не поддерживает ключевые функции.

console.log(Math.min(5, 2, 8));
2

PHP: min() поддерживает массивы и списки аргументов, но без параметра key.

echo min([5, 2, 8]);
2

Java: Collections.min() работает с коллекциями, требует реализации Comparable или Comparator.

List numbers = Arrays.asList(5, 2, 8);
System.out.println(Collections.min(numbers));
2

SQL: агрегатная функция MIN() применяется в запросах к столбцам таблиц.

SELECT MIN(price) FROM products;

C#: метод Enumerable.Min() в LINQ, имеет перегрузки с ключевым селектором.

int[] numbers = {5, 2, 8};
Console.WriteLine(numbers.Min());
2

Lua: стандартной функции нет, обычно реализуют через цикл или используют math.min для чисел.

Go: отсутствие встроенной функции требует ручной реализации или использования пакетов.

Kotlin: minOrNull() и minBy() для коллекций, аналогичны Python по функциональности.

Типичные ошибки при использовании

Передача пустого итерируемого объекта без параметра default:

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

Сравнение несовместимых типов данных:

min([1, 'a', 3])
TypeError: '<' not supported between instances of 'str' and 'int'

Неверное использование key-функции, возвращающей None:

min([1, 2, 3], key=lambda x: None)
TypeError: '<' not supported between instances of 'NoneType' and 'NoneType'

Ошибочная передача key как позиционного аргумента:

min([1, 2, 3], len)
TypeError: 'int' object is not callable

Изменения в последних версиях Python

В Python 3.4 добавлен параметр default для обработки пустых итерируемых объектов без возникновения ValueError.

До Python 3.8 функция min не поддерживала использование ключевого параметра default при вызове с несколькими позиционными аргументами. Сейчас это поведение единообразно.

Оптимизации внутренней реализации в Python 3.11 улучшили производительность функции для некоторых типов данных.

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

Поиск слова с минимальным ASCII-суммой кодов символов:

Пример python
words = ['python', 'java', 'c++']
min_word = min(words, key=lambda w: sum(ord(c) for c in w))
print(min_word)
c++

Работа с объектами пользовательских классов:

Пример 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('Book', 15), Product('Pen', 3), Product('Notebook', 8)]
print(min(products, key=lambda p: p.price))
Pen: 3

Использование с генераторами и большими данными:

Пример python
import random
gen = (random.randint(1, 1000) for _ in range(100000))
print(min(gen))
1

Одновременное применение min и max с одинаковой key-функцией:

Пример python
data = ['a', 'bb', 'ccc', 'dddd']
shortest = min(data, key=len)
longest = max(data, key=len)
print(f'Короткое: {shortest}, Длинное: {longest}')
Короткое: a, Длинное: dddd

Поиск минимального значения в словаре по ключам или значениям:

Пример python
prices = {'apple': 50, 'banana': 30, 'orange': 45}
print(min(prices))  # По ключам
print(min(prices, key=lambda k: prices[k]))  # По значениям
apple
banana

питон min function comments

En
Min Return smallest element