На чтение 5 мин Просмотров 3.8к. Опубликовано
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()
с пустым списком. Если возникает исключение, мы выводим сообщение «Список пуст». Если исключение не возникает, мы выводим минимальное значение в списке.
We are given a list of numbers and our task is to write a Python program to find the smallest number in given list. For the following program we can use various methods including the built-in min method, sorting the array and returning the last element, etc.
Example:
Input : list1 = [10, 20, 4] Output : 4 Input : list2 = [20, 10, 20, 1, 100] Output : 1
Sorting the list to find smallest number in a list
In Ascending order
Here writing a Python program where we are sorting the entire list and then returning the first element as it’ll be the smallest element present in the list.
Python3
list1
=
[
10
,
20
,
4
,
45
,
99
]
list1.sort()
print
(
"Smallest element is:"
, list1[
0
])
Output:
smallest element is: 4
Time Complexity: O(nlogn)
Auxiliary Space: O(1)
In Descending order
Here we are sorting using the sort() function the entire list and then returning the last element as it’ll be the smallest element present in the list.
Python3
list1
=
[
10
,
20
,
4
,
45
,
99
]
list1.sort(reverse
=
True
)
print
(
"Smallest element is:"
, list1[
-
1
])
Output:
smallest element is: 4
Using min() Method to find smallest number in a list
Here we are using the min Method and then returning the smallest element present in the list.
Python3
list1
=
[
10
,
20
,
1
,
45
,
99
]
print
(
"Smallest element is:"
,
min
(list1))
Output:
Smallest element is: 1
Time Complexity: O(n)
Auxiliary Space: O(n), where n is length of list
Find minimum list element for a user defined list
Python3
list1
=
[]
num
=
int
(
input
(
"Enter number of elements in list: "
))
for
i
in
range
(
1
, num
+
1
):
ele
=
int
(
input
(
"Enter elements: "
))
list1.append(ele)
print
(
"Smallest element is:"
,
min
(list1))
Output:
Enter number of elements in list: 4 Enter elements: 12 Enter elements: 19 Enter elements: 11 Enter elements: 99 Smallest element is: 11
Find the smallest element in list comparing every element
Python3
l
=
[
int
(l)
for
l
in
input
(
"List:"
).split(
","
)]
print
(
"The list is "
,l)
min1
=
l[
0
]
for
i
in
range
(
len
(l)):
if
l[i] < min1:
min1
=
l[i]
print
(
"The smallest element in the list is "
,min1)
Input:
List: 23,-1,45,22.6,78,100,-5
Output:
The list is ['23', '-1', '45', '22.6', '78', '100','-5'] The smallest element in the list is -5
Using the lambda function to find smallest number in a list
Here we are using the lambda function to print the smallest number present in the list.
Python3
lst
=
[
20
,
10
,
20
,
1
,
100
]
print
(
min
(lst, key
=
lambda
value:
int
(value)) )
Output:
1
Using the enumerate function to find smallest number in a list
Here we are iterating over the list using the enumerate() function and returning the last element.
Python3
lst
=
[
20
,
10
,
20
,
1
,
100
]
a,i
=
min
((a,i)
for
(i,a)
in
enumerate
(lst))
print
(a)
Output:
1
Using reduce function to find the smallest number in a list
Here we are iterating over the list using reduce() function and returning the smallest element.
Python
from
functools
import
reduce
lst
=
[
20
,
10
,
20
,
15
,
100
]
print
(
reduce
(
min
,lst) )
Using heap:
One approach is to use a heap data structure. A heap is a complete binary tree that satisfies the heap property: the value of each node is at least as great as the values of its children. This property allows us to efficiently find the largest or smallest element in the heap in O(1) time.
To find the smallest element in a list using a heap, we can first build a min heap using the elements in the list. Then, we can simply return the root element of the heap, which will be the smallest element in the heap.
Here is an example of how this can be done in Python:
Python3
import
heapq
def
find_smallest(numbers):
heap
=
[(x, x)
for
x
in
numbers]
heapq.heapify(heap)
_, smallest
=
heapq.heappop(heap)
return
smallest
numbers
=
[
10
,
20
,
4
,
45
,
99
]
print
(find_smallest(numbers))
This approach has a time complexity of O(n log n) for building the heap and O(1) for finding the smallest element, making it more efficient than the methods mentioned in the article which have a time complexity of O(n).
Method: Using recursion
We can use recursive function to find the smallest number in the list.
Python3
def
Findsmall(itr,ele,list1):
if
itr
=
=
len
(list1):
print
(
"The smallest number in the list is "
,ele)
return
if
list1[itr]<ele:
ele
=
list1[itr]
Findsmall(itr
+
1
,ele,list1)
return
lis
=
[
5
,
7
,
2
,
8
,
9
]
ele
=
lis[
0
]
Findsmall(
0
,ele,lis)
Output
The smallest number in the list is 2
Time complexity: O(n) It will perform n recursive calls so the time complexity will be O(n).
Auxiliary Space: O(n) ,It will perform n recursive calls each recursive call pushed into stack so the space complexity will be O(n)
Using numpy module:
We can use numpy module to find the smallest number in the list.
Python3
import
numpy as np
lis
=
[
5
,
7
,
2
,
8
,
9
]
minimum
=
np.
min
(lis)
print
(
"The smallest number in the list is"
, minimum)
Output
The smallest number in the list is 2
Time complexity: O(n), here n is the size of the input list. This is because the numpy min function iterates over each element in the list once to find the minimum value.
Auxiliary Space: O(1), as it only requires a single variable “minimum” to store the result.
Finding the minimum element in a list that consists of duplicate elements –
We might be given a certain list in which some of the elements have been repeated. The minimum element could be one of those repeating elements, but it will be printed the same amount of time it is present in the list. How to avoid that ?
Python3
arr
=
[
5
,
2
,
3
,
2
,
5
,
4
,
7
,
9
,
7
,
10
,
15
,
68
]
set_arr
=
set
(arr)
print
(
min
(set_arr))
Find all the positions of the minimum value in a list that consists of duplicate elements –
Here we will now see how we can print all the positions (index) of the minimum value which is present multiple times in the same list. We will use a dictionary to store all the indexes of the value and the value itself.
Python3
arr
=
[
2
,
6
,
8
,
4
,
9
,
7
,
52
,
3
,
6
,
2
,
4
,
5
,
6
,
8
,
2
]
min_val
=
min
(arr)
values
=
{}
for
pos,val
in
enumerate
(arr):
if
val
=
=
min_val:
values.update({pos:val})
print
(values)
Output
{0: 2, 9: 2, 14: 2}
The time complexity of this code is O(n), where n is the length of the input list arr. The min function takes O(n) time to find the minimum value in the list, and the subsequent loop that finds all occurrences of the minimum value also takes O(n) time.
The space complexity of this code is O(k), where k is the number of occurrences of the minimum value in the list. The values dictionary stores the positions and values of all occurrences of the minimum value, which can be at most n/2 if all elements in the list are the same (in which case the time complexity of finding the minimum value would be O(2n) = O(n)).
Last Updated :
08 May, 2023
Like Article
Save Article
Допустим, у нас есть список [32, 54, 67, 21]
и мы хотим найти наименьшее число в этом списке. Очевидно, что это 21. В этой статье мы разберем три способа поиска наименьшего числа при помощи Python: при помощи функции min()
, метода sort()
и перебора списка в цикле for
.
1. Ищем наименьшее число с помощью функции min()
min()
— это встроенная в Python функция, которая принимает список в качестве аргумента и возвращает наименьшее значение в нем. Пример:
# Задаем список list1 = [-1, 65, 49, 13, -27] print("list = ", list1) # Находим наименьшее число s_num = min(list1) print("The smallest number in the given list is ", s_num) # Результат: # The smallest number in the given list is -27
Это один из самых простых способов найти наименьшее значение в списке. Все, что вам нужно сделать, это передать список функции min()
в качестве аргумента.
2. Поиск наименьшего числа при помощи sort()
sort()
– это встроенный в Python метод. Он не возвращает наименьшее значение, а сортирует список в порядке возрастания. Отсортировав список и получив доступ к его первому элементу, мы найдем наименьшее число. Давайте теперь перейдем к коду:
# Задаем список list1 = [17, 53, 46, 8, 71] print("list = ", list1) # Сортируем список list1.sort() # Выводим в консоль наименьшее значение print("The smallest number in the given list is ", list1[0]) # Результат: # The smallest number in the given list is 8
3. Как найти наименьшее число при помощи цикла for
ls1 = [] total_ele = int(input(" How many elements you want to enter? ")) # Получаем элементы списка от пользователя for i in range(total_ele): n = int(input("Enter a number:")) ls1.append(n) print(ls1) min = ls1[0] # Находим наименьшее число for i in range(len(ls1)): if ls1[i] < min: min = ls1[i] print("The smallest element is ", min)
В приведенном выше коде мы используем два цикла for
: один для получения элементов списка от пользователя, а второй — для поиска наименьшего числа из списка.
После получения элементов от пользователя мы определяем первый элемент списка (с индексом 0) как наименьшее число (min
). Затем с помощью цикла for
мы сравниваем каждый элемент списка с min
. Если находится элемент меньше, это значение присваивается min
.
Таким образом в итоге переменной min будет присвоено минимальное значение.
Результат работы вышеприведенного кода в консоли:
How many elements you want to enter? 4 Enter a number: 15 Enter a number: 47 Enter a number: 23 Enter a number: 6 [15, 47, 23, 6] The smallest number is 6
Заключение
Итак, мы рассмотрели три подхода к поиску наименьшего числа в списке. Надеемся, что вы все поняли. Если есть вопросы, не стесняйтесь, задавайте ниже.
Перевод статьи “3 Easy Methods to Find the Smallest Number in Python”.
Вы можете найти наибольший номер списка в Python, используя функцию sort() или более простой цикл for.
Использование функции sort() довольно лаконично, но использование цикла For является наиболее эффективным. Мы рассмотрим эти два подхода на примерах.
Пример 1
Мы знаем, что встроенная функция sort() сортирует список в порядке возрастания или убывания. После сортировки списка у вас будет самый большой номер в конце списка, если вы отсортировали его в порядке возрастания, или в начале списка, если вы отсортировали его в порядке убывания.
В следующем примере мы отсортируем данный список в порядке возрастания. Конечно, последний номер отсортированного списка – это самый большой номер.
# list a=[18, 52, 23, 41, 32] # sort the list, default is in ascending order a.sort() # largest number is the last item in the sorted list ln = a[-1] # print the largest number print("Largest element is: ",ln)
Вывод:
Largest element is: 52
a [-1] выбирает последний элемент в списке.
Пример 2: с помощью цикла For
Хотя найти наибольшее число с помощью функции sort() легко, использование цикла For делает это относительно быстрее с меньшим количеством операций.
a = [18, 52, 23, 41, 32] #variable to store largest number ln = a[0] if a else None #find largest number for i in a: if i>ln: ln=i print("Largest element is: ",ln)
Вывод:
Largest element is: 52
В этом примере мы приняли список и инициализировали переменную ln с наибольшим числом первым элементом списка. Если в списке нет элементов, ln инициализируется значением None.
Повторяйте цикл для каждого элемента в списке. Во время каждой итерации мы проверяем, меньше ли наибольшее число этого элемента. В этом случае мы обновляем самое большое число с помощью элемента.
Когда вы завершите обход списка, вы получите наибольший номер списка в вашей переменной.
Вы можете найти наименьший номер списка в Python, используя функцию min(), функцию sort() или цикл for.
Мы рассмотрим следующие процессы, чтобы найти наименьшее число в списке, с примерами:
- встроенную функцию min();
- функцию сортировки sort();
- Цикл For.
Выберите один, исходя из требований вашей программы или ваших личных рекомендаций по производительности.
Пример 1: с помощью min()
Функция min() может принимать список в качестве аргумента и возвращать минимум элементов в списке.
В этом примере мы возьмем список чисел и найдем наименьшее из них с помощью функции min().
# python program to find the smallest number # list of numbers a = [18, 52, 23, 41, 32] # find smallest number using min() function smallest = min(a) # print the smallest number print(f'Smallest number in the list is : {smallest}.')
Вывод:
Smallest number in the list is : 18.
Пример 2: с помощью функции sort()
Мы знаем, что функция sort() сортирует список в порядке возрастания или убывания. После сортировки списка у вас будет наименьшее число в начале списка, если вы отсортировали его в порядке возрастания, в конце списка или в порядке убывания.
# python program to find the smallest number # list a = [18, 52, 23, 41, 32] # sort the list, default is in ascending order a.sort() # smallest number smallest = a[0] # print the smallest number print("Smallest number is: ",smallest)
Вывод:
Smallest number is: 18
Пример 3: с помощью цикла for
Хотя найти наименьшее число с помощью функции sort() легко, использование For цикла делает это относительно быстрее с меньшим количеством операций. Кроме того, мы не меняем порядок элементов в данном списке.
a=[18, 52, 23, 41, 32] # smallest number smallest = a[0] if a else None # find smallest for i in a: if i<smallest: smallest=i print("Smallest element is: ", smallest)
Вывод:
Smallest element is: 18
В этом примере:
- Мы приняли список и инициализировали переменную с наибольшим числом для первого элемента списка. Если список пуст, наименьшее число будет None.
- Затем мы перебирали список, используя цикл for:
- Во время каждой итерации мы проверяли, больше ли наименьшее число, чем элемент. Если это так, мы присвоили элементу наименьший номер.
- Когда вы завершите обход списка, вы получите наименьший номер списка в вашей переменной.
This div height required for enabling the sticky sidebar
Working with lists is very common in Python and even more common is to find max and min in a list Python. We will see 3 different methods for each to find min and max in a python list.
A list in python is a collection of user-stored data in order. In a list, data can be of any type like string, integer, float, boolean, etc.
A list can be created by using square brackets [ ]. Example [1, "a", True]
A list can have mixed data or can have only one data type. To find max and min in a list, we will work on a list of numbers. A list that has only integers or float values both negative and positive can be used to find max and min.
Find Maximum Value In List
To find maximum value in a list we will use 3 different methods.
- Using max() function
- Finding the maximum value using for loop
- Using sort() function
1. Using max() function
The max() function is built-in function in Python. It returns the maximum value in a list. It takes a list as an argument and returns the maximum value in the list.
The function accepts the list as an argument. Here is the syntax:
max(list)
Let’s see an example to find the maximum value in a list.
num = [4, 6, 1, 3, 9, 2]
# Find the maximum value in the list
print(max(num))
Output
9
Max in a list of string
The max() function can also be used to find the maximum value in a list of strings.
To compare the values among strings, the max() function uses their ASCII values. For example, the ASCII value of a is 97 and the ASCII value of z is 122.
str = ["a", "b", "c", "d", "e"]
print(max(str))
Output
e
In the above example, max of the list is e because the ASCII value of e is 101 which is the highest in the list.
Note: max() function does not work on lists of mixed data types.
2. Finding the maximum value using for loop
You can create your own Python function to find the maximum value in a list using for loop and if condition.
Algorithm to find the maximum value in a list
- Create a variable max and assign it to the first element of the list
- Create a for loop to iterate over the list
- Check if the current element is greater than max, if yes then assign it to max. Now current element will become the new max.
- Keep iterating over the list until the end of the list and return max.
The example below is implemented using the above algorithm.
def max_value(list):
# set first element as max
max = list[0]
for i in list:
# check if the current element is greater than max
if i > max:
max = i
return max
num = [12, 65, 54, 39, 102, 37, 72, 33, 5, -28, 0, 15]
print(max_value(num))
Output
102
The above example will find the maximum value in the list and print it.
3. Using sort() function: find max
The sort() function is another built-in function in python using which we can find the maximum value in a list. The sort() function sorts the list in ascending order, which means smallest stays at the first position and largest stays at the last position.
The sort() function takes a list as an argument. TO get the maximum value in a list, you can sort the list and picks the last element of the list.
num = [12, 65, 54, 39, 102, 37, 72, 33, 5, -28, 0, 15]
# sort the list
num.sort()
max = num[-1]
print(max)
Output
102
The above example sorts the list and then picks the last element from the sorted list which is the maximum value in the list.
Find Minimum Value In List
Again to find the minimum from a list we can use similar 3 methods but this time just to find the minimum value.
- Using min() function
- Finding the minimum value using for loop
- Using sort() function
1. Using min() function
The min() function in python finds the minimum value from a list and returns it. It can work with both numbers and strings as well but not with mixed data types.
In the following example, the min() function finds the minimum value in a list of numbers and prints the output.
num = [4, 6.4, 1, -3, 0, 2.5]
# Find the minimum value in the list
print(min(num))
Output
-3
Min in a list of string
The min() function can also find the minimum value in a list of strings by comparing their ASCII values.
str = ["d", "A", "&", "@", "b"]
print(min(str))
Output:
&
2. Finding the minimum value using for loop
Creating own function to find minimum value in a list by comparing one value to each other.
Algorithm to find the minimum value in a list
- Store the first element of the list in a variable min
- Now loop through the list element and compare elements from each other. If the current element is less than min, then assign it to min. Now you have the new min value.
- Keep repeating the above steps until the end of the list. At the last min variable will have the actual minimum value of the string.
- Return min.
Here is the implementation of the above algorithm.
def min_value(list):
# set first element as min
min = list[0]
for i in list:
# check if the current element is less than min
if i < min:
min = i
return min
num = [12, 65, 54, 39, 102, 37, 72, 33, 5, -28, 0, 15]
print(min_value(num))
Output
-28
The function will find the minimum value in the list and returns it as output.
3. Using sort() function : find min
We can again use the sort() function here to sort the elements of a list in ascending order and then picks the first element of the list which is the minimum value.
num = [12, 65, 54, 39, 102, 37, 72, 33, 5, -28, 0, 15]
min = num[0]
print(min)
Output
-28
The sort() method sorted the element in ascending order which puts the smallest value in the list at the first position which is -28.
Conclusions
In this short guide, we have covered 3 methods for each to find max and min in a list python. We have also covered the min(), max() and sort() as in-built functions in python and also created a custom function to find minimum and maximum.
Learn to Generate Random Number In Python