Функция min() в Python, минимальное значение элемента
Возвращает минимальное значение элемента последовательности
Синтаксис:
Параметры:
- iterable — итерируемый объект,
- key — должна быть функцией (принимает один аргумент), используется для порядка сравнения элементов итерируемого объекта. Функция вычисляется один раз.
- default — значение по умолчанию, если итерируемый объект окажется пустым,
- arg1. argN — позиционный аргумент,
- *args — список позиционных аргументов.
Возвращаемое значение:
- наименьшее значение.
Описание:
Функция min() возвращает минимальное значение элемента из итерируемого объекта или наименьшее из двух или более переданных позиционных аргументов.
- Если указан один позиционный аргумент, он должен быть итерируемым объектом (список, кортеж, словарь и т.д.).
- Если в функцию передается два или более позиционных аргумента, возвращается наименьшее из них.
- В случае, когда минимальное значение имеют сразу несколько аргументов, то возвращается первый по порядку элемент с наименьшим значением. Это согласуется с другими инструментами сохранения стабильности сортировки, такими как sorted(iterable, key=keyfunc, reverse=True)[0] и heapq.nlargest(1, iterable, key=keyfunc)
Аргумент key — функция подобная той, которая используется в дополнительном методе списков list.sort() . Функция принимает один аргумент и используется для упорядочивания элементов.
Аргумент default по умолчанию указывает объект, который нужно вернуть, если итерируемый объект пуст. Если итерация пуста и значение по умолчанию не указано, то возникает ошибка ValueError .
Функция min() сравнивает элементы, используя оператор < . Поэтому, все передаваемые в них значения должны быть сопоставимы друг с другом и одного типа, иначе бросается исключение TypeError
При передаче в качестве аргумента текстовых строк, байтовых строк или байтовых массивов, а так же списка символов, минимальное значение будет выбираться исходя из порядка следования символов, в таблице соответствующей кодировки.
Изменено в Python 3.8: Аргумент key может быть None .
Примеры нахождения минимального элемента в последовательности.
Нахождение самой короткой строки в списке строк.
Найдем самую короткую строку. В качестве ключа используем функцию len() . Она посчитает количество символов в строке каждого переданного позиционного аргумента, а функция min() выберет минимальное число. Строки можно передать например списком ['Jul', 'John', 'Vicky'] , результат будет тот же.
Нахождение min() в списке строк, записанных как целые числа
Есть список строк чисел и необходимо найти минимум, как если бы они были целыми числами? В первом случае функция min() выберет наименьшее значение списка исходя из лексикографической сортировки. Применим функцию lambda i: int(i) в качестве ключа key , которая преобразует строчные элементы списка в целые числа, тогда функция min() выберет то что нам нужно.
Нахождение min() по второму элементу кортежа для
Например есть список кортежей. По умолчанию будет выбираться кортеж, у которого минимальное значение имеет первый элемент. Но мы хотим получить кортеж, у которого наименьшее значение имеет второй элемент! Для этого применим лямбда-функцию lambda i : i[1] в качестве ключа key , которая укажет функции min() , из каких элементов кортежа выбирать минимальное значение.
Определение индекса у минимального значения в списке.
Допустим есть список чисел и стоит задача, определить индекс минимального значения в этом списке.
Для решения этой задачи необходимо пронумеровать список, т.е. создать кортеж — индекс/число, а затем найти минимум при помощи функции min() , а в качестве ключа этой функции использовать key=lambda i : i[1] .
Найти самое короткое слово в строке в Python
Я работаю над заданием, где мне нужно, чтобы кто-то ввел строку слов, и моя программа должна затем выбрать длину самого короткого и самого длинного слова в этой строке. Я успешно сделал это, чтобы выбрать длину самого длинного слова:
Поэтому, если ввод «счастливый день», моя функция печати сообщает мне, что самое длинное слово состоит из 5 символов.
Тем не менее, я не могу понять, как написать что-то, что выберет длину самого короткого слова во входной строке. Как бы я это сделал?
3 ответа
Самый простой способ найти самое маленькое слово — это использовать min функционировать вместе с len функционировать как key :
Точно так же, чтобы найти самое длинное слово, используйте max :
Теперь легкая часть, чтобы получить ее длину, заключить в len функция:
Если вы хотите знать только длину, а не фактическое слово, вы можете использовать:
Python — найти самое короткое слово в списке
Привет всем, я знаю, возможно, было несколько похожих вопросов, но я был бы признателен, если бы вы могли дать мне более конкретное решение для моих попыток.
В основном программа должна вернуть кратчайшее слово в списке. Самое короткое слово не может быть пустой строкой. <- Я также не знаю, как это сделать.
Спасибо за помощь! 🙂
4 ответа
Вы можете просто использовать функцию build in min:
(word for word in l if word) является выражением генератора,
if word условие if word гарантирует, что пустые строки не используются,
key=len использует длину каждого слова для поиска minium
Вы всегда должны использовать встроенные функции, а не писать свои собственные (возможно, кроме случаев, когда вы учитесь). @Marcin очень хорошо описывает работу функции min , поэтому я хочу представить вам функцию filter в качестве замены выражений генератора.
Посмотрите, как min и filter могут работать вместе:
Он может быть менее интуитивным, по сравнению с решением @Marcin , но я предпочитаю использовать функции высокого порядка вместо генераторов. Чтение текста, где одно слово имеет 40% частоты ( word for word in l if word — 3/7) — нет, спасибо :).
Найти самое длинное и короткое название
задача найти самое короткое и длинное название города(формально). Выводится самое короткое название, а длинное нет. Не могу понять в чём проблема. Заранее спасибо. Вот код :
![]()
Не совсем ясно, почему в строке elif xmax == x11 or xmax == x22 or xmax == x33: используется elif. Замените на обычное if
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.9.5.43611
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.