На чтение 2 мин Просмотров 776 Опубликовано 17.03.2023
Содержание
- Введение
- Метод sort()
- Метод sorted()
- Циклом for
- Функция min()
- Заключение
Введение
В статье рассмотрим четыре способа найти минимальное число в списке в Python.
Метод sort()
Данный способ заключается в том, что мы отсортируем список методом sort(), и минимальное число окажется в самом начале последовательности:
new_list = [6, 10, 5, 2, 7]
new_list.sort()
print(f'Минимальное число в списке: {new_list[0]}')
# Вывод: Минимальный элемент в списке: 2
Метод sorted()
По сути этот способ работает по той же методике, что и предыдущий. Различие лишь в том, что мы будем использовать метод sorted():
new_list = [6, 10, 5, 2, 7]
new_list = sorted(new_list)
print(f'Минимальное число в списке: {new_list[0]}')
# Вывод: Минимальный элемент в списке: 2
Циклом for
Определить минимальное число в списке можно также при помощи цикла for. Для этого создадим переменную min_number, и сохраним в неё значение первого элемента списка:
new_list = [6, 10, 5, 2, 7]
min_number = new_list[0]
Теперь создадим цикл, в котором пройдёмся по всему списку new_list. Внутри цикла зададим условие, что если итерабельное значение меньше min_number, то меняем значение в min_number на итерабельное:
new_list = [6, 10, 5, 2, 7]
min_number = new_list[0]
for i in new_list:
if i < min_number:
min_number = i
print(f'Минимальное число в списке: {min_number}')
# Вывод: Минимальный элемент в списке: 2
Функция min()
В Python есть специальная встроенная функция для нахождения минимального значения не только в списке, но и в кортеже со строкой.
Просто сохраним минимальное значение в переменную min_number, и выведем:
new_list = [6, 10, 5, 2, 7]
min_number = min(new_list)
print(f'Минимальное число в списке: {min_number}')
# Вывод: Минимальный элемент в списке: 2
Заключение
В ходе статьи мы с Вами разобрали целых четыре способа, благодаря которым можно найти минимальный элемент в списке Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂
На чтение 5 мин Просмотров 4.1к. Опубликовано
Python является одним из наиболее популярных языков программирования, который широко используется для работы с данными и научных вычислений. Во многих задачах работы с данными возникает необходимость найти минимальное значение в списке.
Содержание
- Методы для нахождения минимального числа в списке
- Использование цикла for и условного оператора
- Использование встроенной функции min()
- Использование метода sort()
- Использование функции sorted()
- Обработка исключений при поиске минимального числа
Методы для нахождения минимального числа в списке
В Python существует несколько методов для нахождения минимального числа в списке. Некоторые из них очень похожи на методы для нахождения максимального числа в списке, но с некоторыми отличиями. В этой статье мы рассмотрим несколько таких методов, а также покажем, как обрабатывать возможные исключения при использовании этих методов.
Вам может быть интересно: Как найти максимальное число в списке Python
Использование цикла for и условного оператора
Один из способов найти минимальное число в списке Python — использовать цикл for и условный оператор. Для этого можно сначала выбрать первый элемент списка и сравнивать его со всеми остальными элементами, используя условный оператор if. Если текущий элемент меньше выбранного минимального элемента, он становится новым минимальным элементом. Этот процесс повторяется для каждого элемента в списке, пока не будет найден элемент с наименьшим значением.
Вот пример кода, который иллюстрирует этот подход:
numbers = [4, 8, 2, 6, 1, 9, 5]
min_num = numbers[0]
for num in numbers:
if num < min_num:
min_num = num
print(min_num)
В данном примере мы инициализируем переменную min_num
первым элементом списка numbers
. Затем мы перебираем все элементы списка в цикле for
и сравниваем их со значением min_num
. Если текущий элемент меньше min_num
, то мы обновляем значение min_num
. В конце цикла мы выводим min_num
, которое и будет минимальным числом в списке.
Этот подход прост и эффективен, особенно для небольших списков. Однако, для больших списков, более эффективным может быть использование встроенных функций Python, таких как min()
.
Использование встроенной функции min()
Использование встроенной функции min()
— это один из самых простых способов найти минимальное значение в списке в Python.
min()
— это встроенная функция Python, которая находит минимальное значение в итерируемом объекте, таком как список, кортеж или строка. Она возвращает минимальный элемент из переданного ей аргумента.
Вот пример использования min()
для нахождения минимального числа в списке:
numbers = [3, 5, 1, 9, 2, 6]
min_number = min(numbers)
print(min_number) # Выведет: 1
В этом примере мы определили список numbers
, содержащий несколько чисел. Затем мы вызываем функцию min()
и передаем ей список в качестве аргумента. Функция min()
возвращает минимальное значение из списка, которое мы сохраняем в переменной min_number
. Затем мы выводим значение переменной min_number
на экран.
Использование метода sort()
Использование метода sort() для нахождения минимального числа в списке заключается в сортировке списка по возрастанию и выборе первого элемента в отсортированном списке. Этот метод сравнивает элементы списка между собой и переставляет их местами в соответствии с порядком сортировки.
Пример использования метода sort() для нахождения минимального числа в списке:
my_list = [3, 7, 1, 9, 4]
my_list.sort()
min_num = my_list[0]
print(min_num) # Выведет: 1
В этом примере мы объявляем список my_list
с пятью элементами, затем вызываем метод sort() для сортировки списка по возрастанию. Затем мы выбираем первый элемент в отсортированном списке, который будет минимальным числом, и присваиваем его переменной min_num
. Наконец, мы выводим значение переменной min_num
с помощью функции print()
.
Обратите внимание, на то, что метода sort() сортирует список на месте, т.е. изменяет исходный список.
Использование функции sorted()
Другим способом найти минимальное число в списке является использование встроенной функции sorted(). Она принимает список в качестве аргумента и возвращает отсортированный список. После этого мы можем просто взять первый элемент отсортированного списка, который будет являться минимальным числом в исходном списке.
Вот пример:
my_list = [5, 3, 8, 1, 9, 2]
sorted_list = sorted(my_list)
min_num = sorted_list[0]
print(min_num)
В этом примере мы создали список my_list, содержащий несколько чисел. Затем мы использовали функцию sorted(), чтобы получить отсортированный список, и записали первый элемент отсортированного списка в переменную min_num. Наконец, мы вывели min_num на экран, чтобы убедиться, что мы действительно нашли минимальное число в списке.
Обработка исключений при поиске минимального числа
Обработка исключений — это важный аспект программирования, который необходимо учитывать при поиске минимального числа в списке. Если в списке нет элементов, то использование метода min()
или sort()
вызовет ошибку ValueError: min() arg is an empty sequence
или ValueError: list.remove(x): x not in list
.
Чтобы избежать этих ошибок, необходимо выполнить предварительную проверку на пустоту списка. Для этого можно использовать условный оператор if
.
Например:
my_list = []
if not my_list:
print("Список пуст")
else:
print(min(my_list))
В этом примере мы проверяем, является ли список my_list
пустым с помощью условного оператора if
. Если список пустой, мы выводим сообщение «Список пуст». Если список не пустой, мы используем встроенную функцию min()
для поиска минимального значения.
Также можно использовать блок try-except
для обработки исключения, которое может возникнуть при попытке найти минимальное число в пустом списке.
Например:
my_list = []
try:
print(min(my_list))
except ValueError:
print("Список пуст")
В этом примере мы используем блок try-except
для обработки исключения ValueError
, которое возникает при попытке использовать встроенную функцию min()
с пустым списком. Если возникает исключение, мы выводим сообщение «Список пуст». Если исключение не возникает, мы выводим минимальное значение в списке.
In this tutorial, we will look at how to find the min value in a Python list and its corresponding index with the help of some examples.
How to get the minimum value in a list in Python?
A simple approach is to iterate through the list and keep track of the minimum value. Alternatively, you can also use the Python built-in min()
function to find the minimum value in a list.
Let’s look at some of the different ways of finding the smallest value and its index in a list.
Loop through the list to find the minimum
Iterate through the list values and keep track of the min value. Here’s an example.
# create a list ls = [3, 6, 7, 2, 1, 5] # find min value using loop min_val = ls[0] for val in ls: if val < min_val: min_val = val # display the min value print(min_val)
Output:
1
Here, we iterate over each value in the list ls
and keep track of the minimum value encountered in the variable min_val
. After the loop finishes, the variable min_val
stores the minimum value present in the list, 1.
You can use this method to get the index corresponding to the minimum value in the list as well. Use an additional variable to keep track of the current minimum value’s index.
# create a list ls = [3, 6, 7, 2, 1, 5] # find min value using loop min_val = ls[0] min_val_idx = 0 for i in range(len(ls)): if ls[i] < min_val: min_val = ls[i] min_val_idx = i # display the min value print(min_val) # display its index print(min_val_idx)
Output:
1 4
We get the minimum value and its index after the loop finishes. Here we iterate through the list via its index rather than the values. You can also use the enumerate()
function to iterate through the index and value together.
Using min()
to get the maximum value
You can also use the Python built-in min()
function to get the min value in a list. The function returns the minimum value in the passed iterable (for example, list, tuple, etc.).
# create a list ls = [3, 6, 7, 2, 1, 5] # find min value min(ls)
Output:
1
Using the min()
function is simple and is just a single line code compared to the previous example.
You can use the list index()
function to find the index corresponding to the minimum value (assuming you already know the minimum value).
# create a list ls = [3, 6, 7, 2, 1, 5] # find min value min_val = min(ls) # display the min value print(min_val) # display its index print(ls.index(min_val))
Output:
1 4
We get the min value and its index in the list ls
.
Note that the list index()
function returns the index of the first occurrence of the passed value. If the min value occurs more than once in the list, you’ll only get the index of its first occurrence. You can use list comprehension to get all the indices of occurrence of the min value in the list.
# create a list ls = [3, 6, 1, 2, 1, 5] # find min value min_val = min(ls) print(min_val) # find all indices corresponding to min val min_val_idx = [i for i in range(len(ls)) if ls[i]==min_val] print(min_val_idx)
Output:
1 [2, 4]
We get all the indices where the minimum value occurs in the list ls
.
You might also be interested in –
- Find Mode of List in Python
- Python – Get median of a List
Subscribe to our newsletter for more informative guides and tutorials.
We do not spam and you can opt out any time.
-
Piyush is a data professional passionate about using data to understand things better and make informed decisions. He has experience working as a Data Scientist in the consulting domain and holds an engineering degree from IIT Roorkee. His hobbies include watching cricket, reading, and working on side projects.
View all posts
Функция min() в Python возвращает наименьший элемент в итерации или наименьший из двух или более аргументов.
Синтаксис функции min():
min(iterable, *[, key, default]) min(arg1, arg2, *args[, key])
- Если есть только один аргумент, он должен быть итерируемым, таким как строка, список, кортеж и т.д. возвращается наименьший элемент в итерируемом объекте.
- Если предоставлено два или более аргумента, будет возвращен наименьший из них.
- Мы можем указать функцию ключевого аргумента, которая будет использоваться для определения наименьшего элемента. Это необязательный аргумент и в основном используется, когда аргументы являются настраиваемыми объектами.
- Аргумент по умолчанию указывает объект, который нужно вернуть, если предоставленный итеративный объект пуст. Если итерируемый объект пуст и значение по умолчанию не указано, возникает исключение ValueError.
- Если найдено несколько наименьших элементов, возвращается первый.
Содержание
- Примеры функции min
- Min со строкой
- Min с кортежем
- Min со списком
- С настраиваемыми объектами
- С пустой итерацией и значением по умолчанию
- С несколькими аргументами
- С аргументами и ключевой функцией
- С несколькими итерациями
- С несколькими итерациями объектов
- Max со строкой
- Max с кортежем
- Max list
- Max с настраиваемыми объектами
- С пустой итерацией и значением по умолчанию
- С несколькими аргументами
- С аргументами и ключевой функцией
- С несколькими итерациями
- С несколькими итерациями объектов
- Резюме
Давайте посмотрим на несколько примеров функции min() в python .
Min со строкой
Когда функция min() используется со строковым аргументом, возвращается символ с минимальным значением Unicode.
s = 'abcC' print(min(s)) for c in s: print(c, 'unicode value =', ord(c))
Вывод:
C a unicode value = 97 b unicode value = 98 c unicode value = 99 C unicode value = 67
Я использую функцию ord() для печати кодовой точки Unicode символов в строке.
Min с кортежем
tuple_numbers = (1, 2, 3, 4) print(min(tuple_numbers))
Выход: 1.
Min со списком
list_numbers = [1, 2, 3, -4] print(min(list_numbers))
Выход: -4.
С настраиваемыми объектами
Когда мы хотим использовать функцию min() с настраиваемыми объектами, мы должны предоставить ключевой аргумент функции, который будет использоваться для сравнения объектов.
class Data: id = 0 def __init__(self, i): self.id = i def __str__(self): return 'Data[%s]' % self.id def get_data_id(data): return data.id # min() with objects and key argument list_objects = [Data(1), Data(2), Data(-10)] print(min(list_objects, key=get_data_id))
Вывод: Данные [-10].
Если мы не предоставим ключевую функцию в качестве аргумента, мы получим следующую ошибку.
TypeError: '
С пустой итерацией и значением по умолчанию
print(min([], default=20))
Выход: 20.
С несколькими аргументами
print(min(1, 2, 3, 4))
Выход: 1.
С аргументами и ключевой функцией
def str_length(s): return len(s) print(min('a', 'abc', 'b', key=str_length))
Выход: a.
Обратите внимание, что и «a», и «b» являются наименьшими аргументами, поэтому первый «a» возвращается функцией min().
С несколькими итерациями
x1 = [10, 20, 30] x2 = [5, 15, 40, 25] print(min(x1, x2, key=len))
Вывод: [10, 20, 30].
Если мы не предоставим ключевую функцию в качестве аргумента, вывод будет [5, 15, 40, 25]. Это потому, что сравнение будет выполняться между элементами повторяющихся элементов один за другим. Когда будет найден элемент с меньшим значением, будет возвращена итерация с этим элементом.
С несколькими итерациями объектов
x1 = [Data(10), Data(20), Data(30)] x2 = [Data(5), Data(15), Data(40), Data(25)] min_list = min(x1, x2, key=len) for x in min_list: print(x)
Вывод:
Data[10] Data[20] Data[30]
Обратите внимание, что с несколькими аргументами итерации обрабатываются как объекты. Если мы не укажем ключевую функцию, мы получим сообщение об ошибке, как TypeError: ‘. Раньше он работал с целочисленными элементами, потому что они поддерживают операторы > and <.
Функция min() в Python помогает нам идентифицировать наименьший элемент в повторяемом или наименьшем элементе из нескольких аргументов. Это полезно, потому что мы можем указать нашу собственную функцию, которая будет использоваться для сравнения с помощью ключевого аргумента. Это противоположность функции python max().
Функция max() в Python возвращает самый большой элемент в итерируемом или самый большой из двух или более аргументов.
Синтаксис функции max():
max(iterable, *[, key, default]) max(arg1, arg2, *args[, key])
- Если есть только один аргумент, он должен быть итерируемым, таким как строка, список, кортеж и т.д. Возвращается самый большой элемент в итерации.
- Если предоставлено два или более аргумента, будет возвращен самый большой из них.
- Мы можем указать функцию ключевого аргумента, которая будет использоваться для определения самого большого элемента. Это необязательный аргумент и в основном используется, когда аргументы являются настраиваемыми объектами.
- Аргумент по умолчанию указывает объект, который нужно вернуть, если предоставленный итеративный объект пуст. Если итерируемый объект пуст и значение по умолчанию не указано, возникает исключение ValueError.
- Если найдено несколько наибольших элементов, возвращается первый.
Давайте посмотрим на несколько примеров функции max().
Max со строкой
Когда функция max() используется со строковым аргументом, возвращается символ с максимальным значением Unicode.
s = 'abcCba' print(max(s)) print('c' > 'C')
Вывод:
c True
Max с кортежем
tuple_numbers = (1, 2, 3, 4) print(max(tuple_numbers))
Выход: 4.
Max list
list_numbers = [1, 2, 3, -4] print(max(list_numbers))
Выход: 3.
Max с настраиваемыми объектами
Когда мы хотим использовать функцию max() с настраиваемыми объектами, мы должны предоставить ключевой аргумент функции, который будет использоваться для сравнения объектов.
class Data: id = 0 def __init__(self, i): self.id = i def __str__(self): return 'Data[%s]' % self.id def get_data_id(data): return data.id # max() with objects and key argument list_objects = [Data(1), Data(2), Data(-10)] print(max(list_objects, key=get_data_id))
Вывод: Данные [2].
Если мы не предоставим ключевую функцию в качестве аргумента, мы получим следующую ошибку.
TypeError: '>' not supported between instances of 'Data' and 'Data'
С пустой итерацией и значением по умолчанию
print(max([], default=20))
Выход: 20.
С несколькими аргументами
print(max(1, 2, 3, 4))
Выход: 4.
С аргументами и ключевой функцией
def str_length(s): return len(s) print(max('a', 'abc', 'ab', key=str_length))
Выход: abc.
С несколькими итерациями
x1 = [10, 20, 30] x2 = [5, 15, 40, 25] print(max(x1, x2, key=len))
Вывод: [5, 15, 40, 25].
Если мы не предоставим ключевую функцию в качестве аргумента, вывод будет [10, 20, 30]. Это потому, что сравнение будет выполняться между элементами один за другим. Когда будет найден элемент с большим значением, будет возвращена итерация с этим элементом.
С несколькими итерациями объектов
x1 = [Data(10), Data(20), Data(30)] x2 = [Data(5), Data(15), Data(40), Data(25)] max_list = max(x1, x2, key=len) for x in max_list: print(x)
Вывод:
Data[5] Data[15] Data[40] Data[25]
Обратите внимание, что итерации с несколькими аргументами обрабатываются как объекты. Если мы не укажем ключевую функцию, мы получим сообщение об ошибке как TypeError: ‘>’ не поддерживается между экземплярами ‘Data’ и ‘Data’. Раньше он работал с целочисленными элементами, потому что они поддерживают операторы > and <.
Резюме
Функция Python max() помогает нам идентифицировать самый большой элемент в повторяемом или самом большом элементе из нескольких аргументов. Это полезно, потому что мы можем указать нашу собственную функцию, которая будет использоваться для сравнения с помощью ключевого аргумента.
Sometimes, while working with Python lists, we can have a problem in which we intend to find the position of minimum element of list. This task is easy and discussed many times. But sometimes, we can have multiple minimum elements and hence multiple minimum positions. Let’s discuss ways to achieve this task.
Method #1: Using min() + enumerate() + list comprehension In this method, the combination of above functions is used to perform this particular task. This is performed in two steps. In 1st, we acquire the minimum element and then access the list using list comprehension and corresponding element using enumerate and extract every element position equal to minimum element processed in step 1.
Python3
test_list
=
[
2
,
5
,
6
,
2
,
3
,
2
]
print
("The original
list
: "
+
str
(test_list))
temp
=
min
(test_list)
res
=
[i
for
i, j
in
enumerate
(test_list)
if
j
=
=
temp]
print
("The Positions of minimum element : "
+
str
(res))
Output :
The original list : [2, 5, 6, 2, 3, 2] The Positions of minimum element : [0, 3, 5]
Time Complexity: O(n)
Auxiliary Space: O(n)
Method #2: Using loop + min() This is brute method to perform this task. In this, we compute the minimum element and then iterate the list to equate to min element and store indices.
Python3
test_list
=
[
2
,
5
,
6
,
2
,
3
,
2
]
print
("The original
list
: "
+
str
(test_list))
temp
=
min
(test_list)
res
=
[]
for
idx
in
range
(
0
,
len
(test_list)):
if
temp
=
=
test_list[idx]:
res.append(idx)
print
("The Positions of minimum element : "
+
str
(res))
Output :
The original list : [2, 5, 6, 2, 3, 2] The Positions of minimum element : [0, 3, 5]
Time Complexity: O(n*n), where n is the length of the input list. This is because we’re using the loop which has a time complexity of O(n) in the worst case.
Auxiliary Space: O(n), as we’re using additional space res other than the input list itself with the same size of input list.
Approach 3: Using numpy
Note: Install numpy module using command “pip install numpy”
The numpy.where() function returns the indices of elements in an array that satisfy a given condition. In this case, the condition is test_list == np.min(test_list), which returns a Boolean array with True at the indices where the elements are equal to the minimum element in the list, and False elsewhere. The [0] at the end is used to extract the indices from the output of numpy.where(), which is a tuple containing the indices in the first element.
Python3
import
numpy as np
test_list
=
[
2
,
5
,
6
,
2
,
3
,
2
]
print
(
"The original list : "
+
str
(test_list))
res
=
np.where(test_list
=
=
np.
min
(test_list))[
0
]
print
(
"The Positions of minimum element : "
+
str
(res))
Output:
The original list : [2, 5, 6, 2, 3, 2] The Positions of minimum element : [0 3 5]
Time complexity: O(n)
Auxiliary Space: O(n)
Method 4: Use a dictionary to store the indices of each unique value in the list.
Step-by-step approach
- Define the input list test_list with some integer values.
- Print the input list using print().
- Find the minimum value in the list using the min() function, and store it in the variable min_val.
- Create an empty dictionary index_dict to store the indices of each unique value in the list.
- Loop through the elements in test_list using the enumerate() function to get both the index and value at each position in the list.
- Check if the current value is already in index_dict. If it is not, add a new key-value pair to the dictionary where the key is the value and the value is a list
- containing the current index. If the value is already in the dictionary, append the current index to the list of indices for that value.
- Retrieve the list of indices for the minimum value from index_dict and store it in the variable res.
- Print the list of indices of the minimum element in the original list using print().
Below is the implementation of the above approach:
Python3
test_list
=
[
2
,
5
,
6
,
2
,
3
,
2
]
print
(
"The original list : "
+
str
(test_list))
min_val
=
min
(test_list)
index_dict
=
{}
for
i, x
in
enumerate
(test_list):
if
x
not
in
index_dict:
index_dict[x]
=
[i]
else
:
index_dict[x].append(i)
res
=
index_dict[min_val]
print
(
"The Positions of minimum element : "
+
str
(res))
Output
The original list : [2, 5, 6, 2, 3, 2] The Positions of minimum element : [0, 3, 5]
Time complexity: O(n), where n is the length of the list, because it loops through the list once to build the dictionary and once to retrieve the indices of the minimum value.
Auxiliary space: O(m), where m is the number of unique values in the list, because the dictionary can potentially store indices for each unique value in the list.
Last Updated :
17 Apr, 2023
Like Article
Save Article