Как найти максимальное число в питоне
Перейти к содержимому

Как найти максимальное число в питоне

  • автор:

Функция max() в Python, максимальное значение элемента

Находит максимальное значение элемента в последовательности

Синтаксис:
max(iterable, *[, key, default]) max(arg1, arg2, *args[, key]) 
Параметры:
  • iterable — итерируемый объект,
  • key — должна быть функцией (принимает один аргумент), используется для порядка сравнения элементов итерируемого объекта. Функция вычисляется один раз,
  • default — значение по умолчанию, если итерируемый объект окажется пустым,
  • arg1. argN — позиционный аргумент,
  • *args — список позиционных аргументов.
Возвращаемое значение:
  • наибольшее значение объекта.
Описание:

Функция max() возвращает наибольшее значение элемента итерируемого объекта или самое большое из двух или более переданных позиционных аргументов.

  • Если указан один позиционный аргумент, он должен быть итерируемым объектом (список, кортеж, словарь и т.д.).
  • Если в функцию передается два или более позиционных аргумента, возвращается самый большой из них.
  • В случае, когда максимальное значение имеют сразу несколько аргументов. Возвращает первый по порядку элемент с максимальным значением. Это согласуется с другими инструментами сохранения стабильности сортировки, такими как sorted(iterable, key=keyfunc, reverse=True)[0] и heapq.nlargest(1, iterable, key=keyfunc)

Аргумент key — функция подобная той, которая используется в дополнительном методе списков list.sort() . Функция принимает один аргумент и используется для упорядочивания элементов.

>>> x = ['4', '11', '6', '31'] # функция `max` сравнивает # числа как строки >>> max(x) '6' # функция 'key=lambda i: int(i)' применяется # к каждому элементу списка 'x', преобразуя # строки в тип 'int' и теперь функция `max` # сравнивает элементы списка как числа. >>> max(x, key=lambda i: int(i)) '31' # или другое применение функции 'key' # выбор списка с наибольшей суммой элементов >>> max([1,2,3,4], [3,4,5], key=sum) [3, 4, 5] 

Аргумент default по умолчанию указывает объект, который нужно вернуть, если предоставленный итерируемый объект пуст. Если итерация пуста и значение по умолчанию не указано, то возникает ошибка ValueError .

# Значение по умолчанию >>> max([], default=10) 10 

При передаче в качестве аргумента текстовых строк, байтовых строк или байтовых массивов, а так же списка символов, максимальное значение будет выбираться исходя из порядка следования символов, в таблице соответствующей кодировки.

>>> x = list('abcdifgh') >>> max(x) # 'i' 

Изменено в Python 3.8: Аргумент key может быть None .

Примеры поиска максимального значения в последовательности.

  • Нахождение самой длинной строки в списке строк;
  • Нахождение максимального значения в списке строк, записанных как целые числа;
  • Нахождения максимального значения в строке, которая состоит из чисел и строк;
  • Определение индекса у максимального значения в списке;
  • Выбор максимального значения для ключа или значения в словаре;
  • Нахождение списка с наибольшей суммой элементов в списке списков;
  • Нахождение списка с наибольшим количеством элементов в списке списков.
# использование позиционных аргументов >>> max(5, 3, 6, 5, 6) # 6 # использование в качестве аргумента - список >>> max([1.2, 1.3, 1.5, 2, 5.52]) # 5.52 # комбинирование позиционных аргументов и списка # при передаче списка 'x' происходит его распаковка >>> x = (1.2, 1.3, 1.5, 2, 5.52) >>> max(5, 3, 5, *x) # 5,52 

Нахождение самой длинной строки в списке строк.

Найдем самую длинную строку. В качестве ключевой функции используем len() . Она посчитает количество символов в строке каждого элемента списка строк, а функция max() выберет максимальное число. Строки можно передать например как позиционные аргументы, так и списком [‘Jul’, ‘John’, ‘Vicky’] , результат будет тот же.

>>> line = ['Jul', 'John', 'Vicky'] >>> max(line, key=len) # 'Vicky' 

Нахождение max() в списке строк, записанных как целые числа.

Есть список строк чисел и необходимо найти максимум, как если бы они были целыми числами? Если применить функцию max() к исходному списку «как есть», то она выберет наибольшее значение списка исходя из лексикографической сортировки. Для нахождения максимума, как числа, применим функцию lambda i: int(i) в качестве ключа key , которая «на лету» преобразует элементы списка в целые числа, тогда функция max() выберет то что нам нужно.

>>> x = ['4', '11', '6', '31'] >>> max(x) # '6' >>> max(x, key = lambda i: int(i)) # '31' 

Нахождения max() в строке, которая состоит из чисел и строк.

Что бы найти максимум в строке, которая состоит из чисел и строк, необходимо сначала разделить исходную строку на список подстрок. Используем приемы, описанные в примерах функции sum() :

  • по разделителю, например пробелу ‘ ‘ или ‘;’ методом строки str.split() ,
  • вытащить все цифры из исходной строки при помощи функцией re.findall() .

Затем в цикле перебрать полученный список и все строки с цифрами преобразовать в соответствующие числовые типы и уже потом применить функцию

# исходная строка >>> line = '12; 12,5; 14; один; 15.6; два' # способы преобразования строки в список строк # 1 способ по разделителю ';' >>> line.split(';') # ['12', ' 12,5', ' 14', ' один', ' 15.6', ' два'] # 2 способ по регулярному выражению >>> import re >>> match = re.findall(r'[\d\. ]+', line) >>> list(match) # ['12', '12,5', '14', '15.6'] 

Далее будем работать с более сложным списком, полученным 1 способом, где встречаются слова. И так, имеем список строк с цифрами и другими строками. Стоит задача: преобразовать строки с цифрами в соответствующие числовые типы и отбросить строки со словами, что бы потом найти максимум.

Задача усложняется тем, что вещественные числа в строках записаны как через запятую, так и через точку. Для необходимых проверок и преобразований определим функцию str_to_num() .

>>> def str_to_num(str, chars=['.', ',']): . # убираем начальные и конечные пробелы . str = str.strip() . if (any(char in str for char in chars) and . str.replace('.', '').replace(',', '').isdigit()): . # если в строке есть точка или запятая и при их замене на '' . # строка состоит только из цифр то это тип float . return float(str.replace(',', '.')) . elif str.isdigit(): . # если строка состоит только из цифр то это тип int . return int(str) # полученный список строк 1-м способом >>> str_list = ['12', ' 12,5', ' 14', ' один', ' 15.6', ' два'] # новый список чисел, где будем искать максимум >>> num_list = [] >>> for i in str_list: . # применим функцию преобразования строки в число . n = str_to_num(i) . if n is not None: . # если функция возвращает число, . # то добавляем в новый список . num_list.append(str_to_num(i)) >>> num_list # [12, 12.5, 14, 15.6] >>> max(num_list) # 15.6 

Определение индекса у максимального значения в списке.

Допустим есть список чисел и стоит задача, определить индекс максимального значения в этом списке. Для решения этой задачи необходимо пронумеровать список, т.е. создать кортеж — индекс/число, а затем найти максимум, используя в качестве ключа key=lambda i : i[1] .

>>> lst = [1, 5, 3, 6, 9, 7] # пронумеруем список >>> lst_num = list(enumerate(lst, 0)) >>> lst_num # [(0, 1), (1, 5), (2, 3), (3, 6), (4, 9), (5, 7)] # найдем максимум (из второго значения кортежей) >>> t_max = max(lst_num, key=lambda i : i[1]) >>> t_max # (4, 9) # индекс максимального значения >>> t_max[0] # 4 

Нахождение max() для ключа или значения в словаре dict .

Допустим есть словарь, задача: найти максимальное значение ключа или самого значения ключа и вывести эту пару.

# имеем словарь >>> d = 1: 3, 2: 4, 1: 9, 4: 1> # преобразуем его в список отображение >>> key_val = d.items() # преобразуем отображение в список # кортежей (ключ, значение) >>> key_val_list = list(key_val) # [(1, 9), (2, 4), (4, 1)] 

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

Но если необходимо получить пару (key, value) , у которого наибольшее значение имеет значение ключа (второй элемент), то для этого нужно применить лямбда-функцию lambda i : i[1] в качестве аргумента key функции max() , которая укажет, из какого элемента кортежа выбирать наибольшее значение.

# происходит сравнение по # первым элементам кортежа >>> kv = max(key_val_list) >>> kv # (4, 1) # максимальное значение ключа в словаре >>> kv[0] # 4 # меняем порядок сравнения >>> kv = max(key_val_list, key=lambda i : i[1]) >>> kv # (1, 9) # максимальное значение в словаре >>> kv[1] # 9 # ключ этого значения в словаре >>> kv[0] # 1 # получаем максимальное значение из словаря >>> d[kv[0]] # 9 

Нахождение списка с наибольшей суммой элементов в списке списков.

Для выполнения данной задачи, используем функцию max() , а в качестве ключевой функции применим встроенную функцию sum() .

# исходный список >>> lst = [[1, 2, 3], [4, 5], [1, 3, 4, 5], [10, 20]] # выбираем список с наибольшей суммой элементов >>> max(lst, key=sum) # [10, 20] 

Выбор списка с наибольшим количеством элементов из списка списков.

Для выполнения данной задачи, используем функцию max() , а в качестве ключевой функции применим встроенную функцию len() .

# исходный список >>> lst = [[1, 2, 3], [4, 5], [1, 3, 4, 5], [10, 20]] # выбираем список с наибольшим количеством элементов >>> max(lst, key=len) # [1, 3, 4, 5] 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Функция abs(), абсолютное значение числа
  • Функция all(), все элементы True
  • Функция any(), хотя бы один элемент True
  • Функция ascii(), преобразует строку в ASCII
  • Функция bin(), число в двоичную строку
  • Класс bool(), логическое значение объекта
  • Функция breakpoint(), отладчик кода
  • Класс bytearray(), преобразует в массив байтов
  • Класс bytes(), преобразует в строку байтов
  • Функция callable(), проверяет можно ли вызвать объект
  • Функция chr(), число в символ Юникода
  • Класс classmethod, делает функцию методом класса
  • Функция compile() компилирует блок кода Python
  • Класс complex(), преобразует в комплексное число
  • Функция delattr(), удаляет атрибут объекта
  • Класс dict() создает словарь
  • Функция dir(), все атрибуты объекта
  • Функция divmod(), делит числа с остатком
  • Функция enumerate(), счетчик элементов последовательности
  • Функция eval(), выполняет строку-выражение с кодом
  • Функция exec(), выполняет блок кода
  • Функция filter(), фильтрует список по условию
  • Класс float(), преобразует в вещественное число
  • Функция format(), форматирует значение переменной
  • Класс frozenset(), преобразует в неизменяемое множество
  • Функция getattr(), значение атрибута по имени
  • Функция globals(), переменные глобальной области
  • Функция hasattr(), наличие атрибута объекта
  • Функция hash(), хэш-значение объекта
  • Функция help(), справка по любому объекту
  • Функция hex(), число в шестнадцатеричную строку
  • Функция id(), идентификатор объекта
  • Функция input(), ввод данных с клавиатуры
  • Класс int(), преобразует в тип int
  • Функция isinstance(), принадлежность экземпляра к классу
  • Функция issubclass(), проверяет наследование класса
  • Функция iter(), создает итератор
  • Функция len(), количество элементов объекта
  • Класс list(), преобразовывает в список
  • Функция locals(), переменные локальной области
  • Функция map(), обработка последовательности без цикла
  • Функция max(), максимальное значение элемента
  • Класс memoryview(), ссылка на буфер обмена
  • Функция min(), минимальное значение элемента
  • Функция next(), следующий элемент итератора
  • Класс object(), возвращает безликий объект
  • Функция oct(), число в восьмеричную строку
  • Функция open(), открывает файл на чтение/запись
  • Функция ord(), число символа Unicode
  • Функция pow(), возводит число в степень
  • Функция print(), печатает объект
  • Класс property(), метод класса как свойство
  • Класс range(), генерирует арифметические последовательности
  • Функция repr(), описание объекта
  • Функция reversed(), разворачивает последовательность
  • Функция round(), округляет число
  • Класс set(), создает или преобразовывает в множество
  • Функция setattr(), создает атрибут объекта
  • Класс slice(), шаблон среза
  • Функция sorted(), выполняет сортировку
  • Декоратор staticmethod(), метод класса в статический метод
  • Класс str(), преобразует объект в строку
  • Функция sum(), сумма последовательности
  • Функция super(), доступ к унаследованным методам
  • Класс tuple(), создает или преобразует в кортеж
  • Класс type(), возвращает тип объекта
  • Функция vars(), словарь переменных объекта
  • Функция zip(), объединить элементы в список кортежей
  • Функция __import__(), находит и импортирует модуль
  • Функция aiter(), создает асинхронный итератор
  • Функция anext(), следующий элемент асинхронного итератора

Как узнать самое большое число без метода max

Есть у меня один список из которого нужно найти самое большое число:

['138.30000000'] ['4312.10000000'] ['3552.40000000'] ['5635.20000000'] ['7185.80000000'] ['15925.70000000'] ['33492.00000000'] ['20641.50000000'] ['17632.60000000'] ['9450.00000000'] ['10699.60000000'] ['23726.20000000'] ['18398.30000000'] ['12293.30000000'] ['11432.90000000'] ['8325.30000000'] ['16084.40000000'] ['85679.00000000'] ['1648.20000000'] ['15038.30000000'] ['26279.30000000'] ['64136.40000000'] ['3284.70000000'] ['18593.80000000'] ['1758.30000000'] ['20301.40000000'] ['2953.70000000'] ['21084.80000000'] ['3919.40000000'] ['5869.10000000'] ['36933.20000000'] ['4818.80000000'] ['6291.50000000'] ['2243.50000000'] ['21265.40000000'] ['2446.70000000'] ['7180.30000000'] ['18564.20000000'] ['4001.80000000'] ['1528.30000000'] ['1855.20000000'] ['3404.90000000'] ['6807.10000000'] ['12609.00000000'] ['7920.60000000'] ['2212.50000000'] ['22546.90000000'] ['64413.30000000'] ['765.20000000'] ['8246.10000000'] ['909.80000000'] ['22290.50000000'] ['2745.60000000'] ['14254.70000000'] ['5127.50000000'] ['10261.80000000'] ['1417.60000000'] ['75615.30000000'] ['2568.70000000'] ['28823.30000000'] ['656.60000000'] ['4514.10000000'] ['8239.50000000'] ['576.80000000'] ['8961.80000000'] ['28126.90000000'] ['4125.30000000'] ['98515.30000000'] ['5643.80000000'] ['599.00000000'] ['1373.90000000'] ['1023.60000000'] ['2215.50000000'] ['8421.10000000'] ['8621.20000000'] ['2161.70000000'] ['787.60000000'] ['35686.20000000'] ['805.00000000'] ['1393.20000000'] ['399.80000000'] ['1086.30000000'] ['3910.60000000'] ['9976.10000000'] ['1258.00000000'] ['2230.30000000'] ['17033.10000000'] ['40869.70000000'] ['1591.70000000'] ['30744.40000000'] ['1025.00000000'] ['14928.60000000'] ['4188.60000000'] ['802.90000000'] ['4623.30000000'] ['22987.70000000'] ['4054.40000000'] ['35458.30000000'] ['7787.50000000'] ['675.90000000'] ['985.70000000'] ['2568.10000000'] ['1569.60000000'] ['1569.20000000'] ['1836.50000000'] ['690.50000000'] ['8067.40000000'] ['40683.90000000'] ['1263.00000000'] ['1063.80000000'] ['248.10000000'] ['354.00000000'] ['1258.70000000'] ['266.90000000'] ['763.00000000'] ['1205.20000000'] ['4821.40000000'] ['86534.70000000'] ['844.40000000'] ['359.50000000'] ['492.40000000'] ['1016.10000000'] ['5623.30000000'] ['1801.40000000'] ['1071.60000000'] ['527.10000000'] ['2238.90000000'] ['42496.80000000'] ['2660.50000000'] ['1286.10000000'] ['5081.40000000'] ['1994.70000000'] ['3023.50000000'] ['1727.70000000'] ['866.90000000'] 

И метод max мне выдает последнее число в списке. Пытался по другому, не удалось.

Отслеживать

13.4k 1 1 золотой знак 8 8 серебряных знаков 23 23 бронзовых знака

задан 5 дек 2021 в 14:16

23 1 1 серебряный знак 5 5 бронзовых знаков

У вас в списках строки. Соответственно, max находит наибольшую строку (с лексической точки зрения). Сделайте так, чтобы в списках были числа (или укажите функции max параметр key с функцией преобразующей строку в число) — будет искать максимальное число.

Как найти максимальное число в массиве python

Найти максимальный элемент в списке можно с помощью функции max() . Взгляните на пример:

>>> numbers = [1, 33, 41, 11] >>> max(numbers) 41 

Функции 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'

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *