Нахождение наименьшего числа среди набора значений Python

Раздел: Data Science -> Поиск экстремумов

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

Базовая функция min() возвращает наименьший элемент итерируемого объекта. Для числового списка результатом становится самый маленький элемент последовательности.

numbers = [23, 8, 15, 3, 11]
result = min(numbers)
print(result)

Python определить наименьшее число (определение наименьшего числа в python)

3

Такой вызов применяется в большинстве задач Data Science, когда данные уже собраны в список, кортеж или массив numpy. Функция делает один проход по набору и оставляет минимальное значение.

Как получить наименьшее число из нескольких отдельных аргументов?

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

a = min(14, 8, 23, 6)
print(a)
6

Этот вариант подходит, когда числа заранее известны и не оформлены в отдельную коллекцию.

Каким способом найти минимальное число с учетом параметра key?

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

values = ['12', '3', '45', '8']
minimum = min(values, key=int)
print(minimum)
3

В этом примере key=int использует числовое значение каждой строки. Если нужен сам числовой результат, а не исходная строка, применяется min(map(int, values)).

Как выбрать минимальное число в цикле без min()?

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

numbers = [10, 4, 6, 1, 8]
minimum = numbers[0]
for number in numbers[1:]:
    if number < minimum:
        minimum = number
print(minimum)
1

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

Что вернет min() для пустого набора значений?

Пустой итерируемый объект без параметра default вызывает ValueError. Чтобы получить нейтральный результат, применяется аргумент default.

values = []
minimum = min(values, default=None)
print(minimum)
None

Аргумент default удобен при обработке выборок и фильтраций, когда данных может не оказаться совсем.

Как найти минимальное число в многострочном тексте?

Текстовые данные часто приходят из файлов или внешних источников. Строки разделяются построчно, очищаются от пустых значений и преобразуются в числа.

text = '''45
12
78
3
'''
numbers = [int(line) for line in text.splitlines() if line.strip()]
minimum = min(numbers)
print(minimum)
3

Условие if line.strip() исключает пустые строки. Если после чтения файла список оказался пустым, следует добавить default или проверить длину списка перед вызовом min().

Какие сложности встречаются при поиске минимума?

Если не передать default, пустая последовательность вызывает ValueError.

data = []
try:
    min(data)
except ValueError:
    print('нет данных')
нет данных

Смешивание строк и чисел без приведения типа приводит к TypeError. Чтобы избежать ошибки, все элементы сравниваются по единому правилу.

mixed = [10, '5']
result = min(mixed, key=int)
print(result)
5

Значение NaN в наборе с плавающей точкой делает результат непредсказуемым, потому что сравнение с NaN возвращает False. В numpy для такого случая существует функция nanmin, игнорирующая пропуски.

import numpy as np
vector = np.array([np.nan, 8, 2, np.nan])
print(np.nanmin(vector))
2.0

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

string_numbers = ['7', '12', '3']
print(min(string_numbers))
print(min(string_numbers, key=int))
12
3

Позиция минимального элемента в массиве numpy

В анализе данных значение минимальной величины часто дополняется индексом. Функция numpy.argmin находит позицию первого вхождения минимального элемента.

Пример
import numpy as np
scores = np.array([45, 67, 32, 89, 21, 54])
position = np.argmin(scores)
print(position)
print(scores[position])
4
21

Минимальное значение в pandas Series с пропущенными ячейками

В pandas пропущенные значения обозначаются как NaN. Минимум по Series считается с аргументом skipna, который по умолчанию равен True.

Пример
import pandas as pd
data = pd.Series([15.0, float('nan'), 9.5, 21.0, 4.0])
print(data.min(skipna=True))
print(data.min(skipna=False))
4.0
nan

Минимум по категориальным группам в pandas

Для группового сравнения в табличных данных используется groupby и метод min. Результат показывает наименьшую заработную плату в каждом отделе.

Пример
import pandas as pd
df = pd.DataFrame({
    'department': ['sales', 'it', 'sales', 'it', 'hr'],
    'salary': [70, 100, 60, 120, 80]
})
print(df.groupby('department')['salary'].min())
department
hr        80
it       100
sales     60
Name: salary, dtype: int64

Выбор минимального объекта по полю с помощью attrgetter

Когда данные представлены сложными объектами, функция min() может выбрать наименьший объект по заданному атрибуту. Для этого применяется оператор attrgetter из модуля operator.

Пример
from operator import attrgetter

class City:
    def __init__(self, name, population):
        self.name = name
        self.population = population

cities = [
    City('Москва', 13000000),
    City('Казань', 1260000),
    City('Вологда', 310000)
]
smallest_city = min(cities, key=attrgetter('population'))
print(smallest_city.name)
Вологда

Сравнение денежных величин Decimal

Для денежных единиц float не всегда подходит из-за потери точности. Decimal сохраняет точность при сравнении больших или дробных сумм.

Пример
from decimal import Decimal
amounts = [Decimal('100.05'), Decimal('88.90'), Decimal('99.99')]
minimum = min(amounts)
print(minimum)
88.90

Получение нескольких наименьших чисел через heapq

Если требуется найти не только одно минимальное значение, но и несколько соседних с ним элементов, используется функция heapq.nsmallest.

Пример
import heapq
values = [8, 3, 11, 7, 2, 14]
print(heapq.nsmallest(2, values))
[2, 3]

Определение наименьшего числа в Python - comments

En
Python определить наименьшее число (python)