Функции min и max в Python
В языке программирования Python есть встроенные функции поиска минимума и максимума. Им можно передавать как один объект, так и непосредственно множество однотипных объектов. Если передается один объект, то им может быть список, любая другая коллекция или итерируемый объект.
Если передается один список, то в нем находится минимум или максимум, которые возвращаются функциями min() и max() .
>>> a = [11,8,12,0] >>> min(a) 0 >>> max(a) 12
Если передается несколько списков, то целиком возвращается один из переданных списков. При этом сравнение происходит поэлементно: сначала сравниваются первые элементы списков. Если они не равны, то функция min() вернет тот список, первый элемент которого меньше, max() — наоборот. Если первые элементы равны, то будут сравниваться вторые и т. д.
>>> a = [11,8,12,0] >>> b = [11,7,123,9] >>> m = min(a,b) >>> print(m, type(m)) [11, 7, 123, 9] >>> c = [11,8,12] >>> min(a,c) [11, 8, 12]
Функциям min() и max() можно непосредственно передавать множество чисел:
>>> max(3, 8, -3, 12, 9) 12
Таким образом, если функции получают несколько объектов, то сравниваются сами объекты. И неважно какого они типа: списки, числа или что-то другое.
Однако нельзя передать числа и строки или смешанный список. В этом случае функция возвращает ошибку:
>>> s = ['a','d',1] >>> min(s) Traceback (most recent call last): File "", line 1, in TypeError: unorderable types: int() < str()
>>> s = ['a','d','ee'] >>> min(s) 'a'
В функциях min() и max() можно указать необязательный именной параметр key . Ему присваивается одноаргументная функция, которая выполняет какое-то предварительное действие над элементами списка.
>>> a = [8,-11,4,2,-5] >>> max(a) 8 >>> max(a,key=abs) -11
Здесь во втором случае находится максимум среди абсолютных значений чисел. То есть к каждому элементу списка применяется встроенная в Python функция abs . Однако применить ее к целым спискам нельзя:
>>> max(a,b,key=abs) Traceback (most recent call last): File "", line 1, in TypeError: bad operand type for abs(): 'list'
Как найти минимальное число в питоне
![]()
Функции min() и max() в Python: находим максимальное и минимальное значение
27 апреля 2023
Оценки статьи
Еще никто не оценил статью
Функции min() и max() в Python используются для нахождения минимального и максимального значения из набора значений соответственно. Эти функции могут быть применены к любому итерируемому объекту, такому как список, кортеж, множество, словарь или даже строки.
В этой статье мы рассмотрим синтаксис и примеры использования функций min() и max() .
Синтаксис функций min() и max()
Синтаксис функций min() и max() очень простой и состоит только из одного аргумента - итерируемого объекта, для которого нужно найти минимальное или максимальное значение.
min(iterable, *[, key, default]) max(iterable, *[, key, default])
Здесь:
- iterable - это итерируемый объект, для которого нужно найти минимальное или максимальное значение.
- Аргумент key принимает функцию, которая будет вызвана для каждого элемента перед сравнением значений.
- Если указан аргумент default , он будет возвращен, если итерируемый объект пустой.
Примеры использования функций min() и max()
Давайте рассмотрим несколько примеров использования функций min() и max() на разных типах данных:
Пример 1: Работа с числами
numbers = [5, 2, 8, 1, 9, 3, 6] min_num = min(numbers) max_num = max(numbers) print(f"Минимальное число: min_num>") # Минимальное число: 1 print(f"Максимальное число: max_num>") # Максимальное число: 9
Пример 2: Работа со строками
strings = ["apple", "banana", "cherry", "date"] min_str = min(strings) max_str = max(strings) print(f"Минимальная строка: min_str>") # Минимальная строка: apple print(f"Максимальная строка: max_str>") # Максимальная строка: date
Пример 3: Работа с кортежами
tuples = [(2, 5), (1, 2), (4, 4), (2, 3)] min_tpl = min(tuples) max_tpl = max(tuples) print(f"Минимальный кортеж: min_tpl>") # Минимальный кортеж: (1, 2) print(f"Максимальный кортеж: max_tpl>") # Максимальный кортеж: (4, 4)
Пример 4: Работа с словарями
Функции min() и max() также могут использоваться для нахождения минимального и максимального элементов в словаре по ключам. В этом случае они возвращают ключ элемента, а не сам элемент.
prices = 'apple': 0.5, 'banana': 0.3, 'orange': 0.6, 'pear': 0.4> print(min(prices)) # 'apple' print(max(prices)) # 'pear'
Пример 5. Использование min() и max() с key
Функции min() и max() также могут использоваться с функцией key для определения минимального или максимального значения на основе другого критерия. Например, мы можем использовать функцию key для нахождения имени человека с самым длинным именем в списке.
people = ['John', 'Alexandra', 'Bob', 'Peter'] print(max(people, key=len)) # 'Alexandra' print(min(people, key=len)) # 'Bob'
Заключение
В этом примере мы использовали функцию key=len для того, чтобы сравнить элементы по их длине, а не лексикографически.
В заключение можно сказать, что функции min() и max() являются очень полезными в Python для поиска минимального и максимального элементов в списках, кортежах, словарях и других структурах данных.
Они также могут использоваться для определения минимального или максимального значения на основе других критериев с помощью функции key .
Меню категорий
-
Загрузка категорий.
Добро пожаловать в Блог Разработчика Владислава Александровича.
Ведется медленная, но уверенная разработка функционала сайта.
Django Core: 0.3.4 / Next.js 1.0 / UPD: 05.06.2023
О функции min в Python
В питоне есть много удобных функций, которые решают всякие мелкие задачки. Одна из таких функций - min() . Она находит минимальный элемент в списке. Например, ниже показан поиск наименьшего числа и поиск самой короткой строки (если коротких много — выберется первая по алфавитному порядку):
numbers = [4, 1, 2, 5] min(numbers) # 1 words = ['abcd' 'ab', 'a', 'b', 'abcde'] min(words) # 'a'
Самое главное, что эта функция умеет искать минимальное значение среди любых типов данных, доступных в питоне. Давайте найдём автора с наименьшим количеством постов. Есть список авторов блога: словари с именем автора и количеством его постов:
users = [ 'username': 'Даша', 'posts': 25>, 'username': 'Валера', 'posts': 10>, 'username': 'Ибрагим', 'posts': 56>, ]
Здесь подошла бы функция min() , но Python не умеет сравнивать словари напрямую. Нужно сказать ему, что сравнивать нужно по значению ключа 'posts' .
К счастью, создатели языка предвидели такой случай и ввели опциональный параметр key . Он принимает на вход функцию, которая для каждого автора вернёт количество его постов. min поймёт, что сравнивать нужно по ним:
def get_user_posts(user): return user['posts'] min(users, key=get_user_posts) # Вернёт
Функция get_user_posts , получает на вход пользователя user , достаёт количество его постов и возвращает наружу return user['posts'] . Затем, мы передаём эту функцию в min() . Обратите внимание, что get_user_posts передаётся без скобок, подобно коллбэку! Функция min будет вызывать её самостоятельно, во время поиска.
Читать далее
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
минимальный элемент массива python
Причина в том, что вы каждую итерацию цикла перезаписываете min нулевым элементом массива. Строку min = massiv[0] нужно вынести до цикла, вот так:
massiv = [] dlina = int(input()) for y in range(0, dlina): massiv.append(int(input())) min = massiv[0] for i in range(0, len(massiv)): if massiv[i]
Отслеживать
ответ дан 16 ноя 2021 в 22:06
565 2 2 серебряных знака 16 16 бронзовых знаков
Вы постоянно устанавливаете минимум в цикле, что неправильно
Так же я бы заменил цикл
massiv = [] dlina = int(input()) for y in range(0, dlina): massiv.append(int(input())) min_value = massiv[0] for number in massiv: if number < min_value: min_value = number print(min_value)
Отслеживать
ответ дан 16 ноя 2021 в 22:06
Andrey Maslov Andrey Maslov
2,968 1 1 золотой знак 6 6 серебряных знаков 11 11 бронзовых знаков
во первых не очень хорошо использовать в качестве названия переменной название существующей функции
а ошибка в том, что присваивание минимального значения происходит внутри цикла, вынесите ее наружу цикла и все будет хорошо
ну и код поджать можно вот так еще:
data = [int(input()) for y in range(0, int(input()))] value_min = data[0] for value in data: value_min = value if value_min > value else value_min print(value_min)