В этой статье мы научимся находить максимальное значение в списке на Python. Для всестороннего понимания вопроса мы рассмотрим использование некоторых встроенных функций, простые подходы, а также небольшие реализации известных алгоритмов.
Сначала давайте вкратце рассмотрим, что такое список в Python и как найти в нем максимальное значение или просто наибольшее число.
В Python есть встроенный тип данных под названием список (list). По своей сути он сильно напоминает массив. Но в отличие от последнего данные внутри списка могут быть любого типа (необязательно одного): он может содержать целые числа, строки или значения с плавающей точкой, или даже другие списки.
Хранимые в списке данные определяются как разделенные запятыми значения, заключенные в квадратные скобки. Списки можно определять, используя любое имя переменной, а затем присваивая ей различные значения в квадратных скобках. Он является упорядоченным, изменяемым и допускает дублирование значений. Например:
list1 = ["Виктор", "Артем", "Роман"]
list2 = [16, 78, 32, 67]
list3 = ["яблоко", "манго", 16, "вишня", 3.4]
Далее мы рассмотрим возможные варианты кода на Python, реализующего поиск наибольшего элемента в списке, состоящем из сравниваемых элементов. В наших примерах будут использоваться следующие методы/функции:
- Встроенная функция
max()
- Метод грубой силы (перебора)
- Функция
reduce()
- Алгоритм Heap Queue (очередь с приоритетом)
- Функция
sort()
- Функция
sorted()
- Метод хвостовой рекурсии
№1 Нахождение максимального значения с помощью функции max()
Это самый простой и понятный подход к поиску наибольшего элемента. Функция Python max()
возвращает самый большой элемент итерабельного объекта. Ее также можно использовать для поиска максимального значения между двумя или более параметрами.
В приведенном ниже примере список передается функции max в качестве аргумента.
list1 = [3, 2, 8, 5, 10, 6]
max_number = max(list1)
print("Наибольшее число:", max_number)
Наибольшее число: 10
Если элементы списка являются строками, то сначала они упорядочиваются в алфавитном порядке, а затем возвращается наибольшая строка.
list1 = ["Виктор", "Артем", "Роман"]
max_string = max(list1, key=len)
print("Самая длинная строка:", max_string)
Самая длинная строка: Виктор
№2 Поиск максимального значения перебором
Это самая простая реализация, но она немного медленнее, чем функция max()
, поскольку мы используем этот алгоритм в цикле.
В примере выше для поиска максимального значения нами была определена функция large()
. Она принимает список в качестве единственного аргумента. Для сохранения найденного значения мы используем переменную max_
, которой изначально присваивается первый элемент списка. В цикле for каждый элемент сравнивается с этой переменной. Если он больше max_
, то мы сохраняем значение этого элемента в нашей переменной. После сравнения со всеми членами списка в max_
гарантировано находится наибольший элемент.
def large(arr):
max_ = arr[0]
for ele in arr:
if ele > max_:
max_ = ele
return max_
list1 = [1,4,5,2,6]
result = large(list1)
print(result) # вернется 6
№3 Нахождение максимального значения с помощью функции reduce()
В функциональных языках reduce()
является важной и очень полезной функцией. В Python 3 функция reduce()
перенесена в отдельный модуль стандартной библиотеки под названием functools. Это решение было принято, чтобы поощрить разработчиков использовать циклы, так как они более читабельны. Рассмотрим приведенный ниже пример использования reduce()
двумя разными способами.
В этом варианте reduce()
принимает два параметра. Первый — ключевое слово max, которое означает поиск максимального числа, а второй аргумент — итерабельный объект.
from functools import reduce
list1 = [-1, 3, 7, 99, 0]
print(reduce(max, list1)) # вывод: 99
Другое решение показывает интересную конструкцию с использованием лямбда-функции. Функция reduce()
принимает в качестве аргумента лямбда-функцию, а та в свою очередь получает на вход условие и список для проверки максимального значения.
from functools import reduce
list1 = [-1, 3, 7, 99, 0]
print(reduce(lambda x, y: x if x > y else y, list1)) # -> 99
№4 Поиск максимального значения с помощью приоритетной очереди
Heapq — очень полезный модуль для реализации минимальной очереди. Если быть более точным, он предоставляет реализацию алгоритма очереди с приоритетом на основе кучи, известного как heapq. Важным свойством такой кучи является то, что ее наименьший элемент всегда будет корневым элементом. В приведенном примере мы используем функцию heapq.nlargest()
для нахождения максимального значения.
import heapq
list1 = [-1, 3, 7, 99, 0]
print(heapq.nlargest(1, list1)) # -> [99]
Приведенный выше пример импортирует модуль heapq и принимает на вход список. Функция принимает n=1
в качестве первого аргумента, так как нам нужно найти одно максимальное значение, а вторым аргументом является наш список.
№5 Нахождение максимального значения с помощью функции sort()
Этот метод использует функцию sort()
для поиска наибольшего элемента. Он принимает на вход список значений, затем сортирует его в порядке возрастания и выводит последний элемент списка. Последним элементом в списке является list[-1]
.
list1 = [10, 20, 4, 45, 99]
list1.sort()
print("Наибольшее число:", list1[-1])
Наибольшее число: 99
№6 Нахождение максимального значения с помощью функции sorted()
Этот метод использует функцию sorted()
для поиска наибольшего элемента. В качестве входных данных он принимает список значений. Затем функция sorted()
сортирует список в порядке возрастания и выводит наибольшее число.
list1=[1,4,22,41,5,2]
sorted_list = sorted(list1)
result = sorted_list[-1]
print(result) # -> 41
№7 Поиск максимального значения с помощью хвостовой рекурсии
Этот метод не очень удобен, и иногда программисты считают его бесполезным. Данное решение использует рекурсию, и поэтому его довольно сложно быстро понять. Кроме того, такая программа очень медленная и требует много памяти. Это происходит потому, что в отличие от чистых функциональных языков, Python не оптимизирован для хвостовой рекурсии, что приводит к созданию множества стековых фреймов: по одному для каждого вызова функции.
def find_max(arr, max_=None):
if max_ is None:
max_ = arr.pop()
current = arr.pop()
if current > max_:
max_ = current
if arr:
return find_max(arr, max_)
return max_
list1=[1,2,3,4,2]
result = find_max(list1)
print(result) # -> 4
Заключение
В этой статье мы научились находить максимальное значение из заданного списка с помощью нескольких встроенных функций, таких как max()
, sort()
, reduce()
, sorted()
и других алгоритмов. Мы написали свои код, чтобы попробовать метод перебора, хвостовой рекурсии и алгоритма приоритетной очереди.
На чтение 3 мин Просмотров 204 Опубликовано 18.04.2023
Содержание
- Введение
- Метод sort()
- Метод sorted()
- Циклом for
- Функция max()
- Заключение
Введение
В данной статье рассмотрим четыре способа для поиска максимального значения в списке в Python.
Метод sort()
Как мы знаем, метод sort() сортирует упорядоченные коллекции элементов по возрастанию. Однако, если мы добавим параметр reverse, то сможем отсортировать список по убыванию. После такой сортировки максимальный элемент списка будет находиться по индексу 0:
new_list = [6, 10, 5, 2, 7]
new_list.sort(reverse=True)
print(f'Максимальный элемент в списке: {new_list[0]}')
# Вывод: Максимальное число в списке: 10
Метод sorted()
Данный способ работает по той же методике, что и предыдущий. Различие лишь в том, что мы будем использовать функцию sorted():
new_list = [6, 10, 5, 2, 7]
new_list = sorted(new_list, reverse=True)
print(f'Максимальный элемент в списке: {new_list[0]}')
# Вывод: Максимальное число в списке: 10
Циклом for
Мы можем определить максимальное число в списке при помощи цикла for. Для этого создадим переменную max_number, и сохраним в неё значение первого элемента списка:
new_list = [6, 10, 5, 2, 7]
max_number = new_list[0]
Далее создадим цикл, в котором пройдёмся по всему списку new_list. Внутри цикла зададим условие, что если итерабельное значение больше max_number, то меняем значение в max_number на итерабельное:
new_list = [6, 10, 5, 2, 7]
max_number = new_list[0]
for i in new_list:
if i > max_number:
max_number = i
print(f'Максимальное число в списке: {max_number}')
# Вывод: Максимальный элемент в списке: 10
Функция max()
В Python существует встроенная функция, которая позволяет находить максимальное значение в списке, кортеже и т.д.
Сохраним значение максимального элемента в списке, и выведем его:
new_list = [6, 10, 5, 2, 7]
max_number = max(new_list)
print(f'Максимальное число в списке: {max_number}')
# Вывод: Максимальное число в списке: 10
Заключение
В ходе статьи мы с Вами разобрали целых четыре способа нахождения максимального элемента в списке Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂
This approach is without using
max()
function
a = [1,2,3,4,6,7,99,88,999]
max_num = 0
for i in a:
if i > max_num:
max_num = i
print(max_num)
Also if you want to find the index of the resulting max,
print(a.index(max_num))
Direct approach by using function max()
max() function returns the item with the highest value, or the item with the highest value in an iterable
Example: when you have to find max on integers/numbers
a = (1, 5, 3, 9)
print(max(a))
>> 9
Example: when you have string
x = max("Mike", "John", "Vicky")
print(x)
>> Vicky
It basically returns the name with the highest value, ordered alphabetically.
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
To find the largest number in a list in Python:
- Set the first element as the largest number candidate.
- Loop through the list of numbers.
- Update the largest number candidate if a number is greater than it.
Here is how it looks in code:
heights = [100, 2, 300, 10, 11, 1000] largest_number = heights[0] for number in heights: if number > largest_number: largest_number = number print(largest_number)
Output:
1000
This is the naive implementation of finding the largest number.
But there are also some useful built-in mechanisms you can use.
In this guide, you learn different ways to find the maximum value in a list in Python.
The max() Function — Find the Largest Element of a List
In Python, there is a built-in function max()
you can use to find the largest number in a list.
To use it, call the max()
on a list of numbers. It then returns the greatest number in that list.
Here is an example:
heights = [100, 2, 300, 10, 11, 1000] max_height = max(heights) print(max_height)
Output:
1000
Alternative Approaches to Finding the Largest Number in a List
Now you know two straightforward ways to find the largest number in a list in Python.
Let’s take a look at some more uncommon approaches.
Reduce() Function
You can also use the functools
reduce()
function to find the largest number in a list.
Before we do that, it is important to understand how the reduce()
function works.
reduce(function, iterable)
The reduce function takes two parameters:
- A function that is applied for each element of an iterable.
- An iterable, such as a list.
It then:
- Takes the first two elements of a sequence and calls the function on them.
- Takes the previous result, and calls the function on the result and the next number in the list.
- This process continues until there are no elements left in the list.
To learn more about the reduce()
function, check this article.
Anyway, let’s use the reduce()
function to find the largest element in a list.
Reduce() with the built-in max() Function
Here is an example of how you can use reduce to find the largest number in a list:
from functools import reduce heights = [100, 2, 300, 10, 11, 1000] max_height = reduce(max, heights) print(max_height)
Output:
1000
The reduce()
function applies the max()
function for each element as described in the previous chapter.
- It starts with the two first elements and finds the largest of the two
- Then takes the result and compares it with the third element.
- This process continues until there are no numbers left in the list.
Let’s also see another, perhaps a bit more demonstrative example.
Reduce() with a Custom Max Function
Another way you can use reduce()
to find the largest number in a list is by implementing the max()
function yourself.
For example:
from functools import reduce heights = [100, 2, 300, 10, 11, 1000] def my_max(x, y): if x < y: return y else: return x max_height = reduce(my_max, heights) print(max_height)
Output
1000
Reduce() with a Lambda Function
And the 3rd approach is to use reduce()
with a lambda expression.
This means you define the max function inline in the reduce()
function call.
For example:
from functools import reduce heights = [100, 2, 300, 10, 11, 1000] max_height = reduce(lambda x, y: y if x < y else x, heights) print(max_height)
Output:
1000
The lambda x, y: y if x < y else x
part does the same as the my_max()
function in the previous example.
Notice that the if-else statement is shortened to a one-liner expression.
Find The Largest Number Using a Heap Queue
The built-in heapq
module in Python comes in with an implementation of the priority queue algorithm.
In short, a heap is a binary tree where each parent node has a value less than or equal to the value of its children.
You can use the heapq.nlargest()
function to figure out the largest number(s) in a list.
For example:
import heapq heights = [100, 2, 300, 10, 11, 1000] max_height = heapq.nlargest(1, heights)[0] print(max_height)
Output:
1000
Conclusion
Today you learned how to find the largest number in a list.
First, you used the “brute-force” method to loop through the list while keeping track of the largest element.
Then you saw how the built-in max()
function does the job for you.
Finally, you saw uncommon alternatives, such as using reduce()
with lambdas or a heap queue.
Each of these approaches gets the job done for you.
Feel free to pick the approach that is best for your situation.
If I had to find the largest element, I would pick the most readable approach, that is, the built-in max()
function.
Thanks for reading. I hope you find it useful.
Happy coding!
Further Reading
Lambdas in Python
About the Author
-
I’m an entrepreneur and a blogger from Finland. My goal is to make coding and tech easier for you with comprehensive guides and reviews.
Recent Posts