Как найти наибольший элемент массива python

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

Сначала давайте вкратце рассмотрим, что такое список в Python и как найти в нем максимальное значение или просто наибольшее число.

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

Хранимые в списке данные определяются как разделенные запятыми значения, заключенные в квадратные скобки. Списки можно определять, используя любое имя переменной, а затем присваивая ей различные значения в квадратных скобках. Он является упорядоченным, изменяемым и допускает дублирование значений. Например:

list1 = ["Виктор", "Артем", "Роман"]
list2 = [16, 78, 32, 67]
list3 = ["яблоко", "манго", 16, "вишня", 3.4]

Далее мы рассмотрим возможные варианты кода на Python, реализующего поиск наибольшего элемента в списке, состоящем из сравниваемых элементов. В наших примерах будут использоваться следующие методы/функции:

  1. Встроенная функция max()
  2. Метод грубой силы (перебора)
  3. Функция reduce()
  4. Алгоритм Heap Queue (очередь с приоритетом)
  5. Функция sort()
  6. Функция sorted()
  7. Метод хвостовой рекурсии

№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() и других алгоритмов. Мы написали свои код, чтобы попробовать метод перебора, хвостовой рекурсии и алгоритма приоритетной очереди.

def main():
    a = [2,1,5,234,3,44,7,6,4,5,9,11,12,14,13]
    max = 0
    for number in a:
        if number > max:
            max = number
    print max

if __name__ == '__main__':
    main()

I am able to get the maximum value in the array (without using max() of course…). How can I get the index (position) of that value? Please try to keep it simple without using new Python key words or built-in functions. Thanks!

Levon's user avatar

Levon

137k33 gold badges199 silver badges189 bronze badges

asked Jul 17, 2012 at 21:00

Shankar Kumar's user avatar

Shankar KumarShankar Kumar

2,1776 gold badges25 silver badges31 bronze badges

8

In my code I would use this:

>>> max(enumerate(a),key=lambda x: x[1])[0]
3

answered Jul 17, 2012 at 21:15

ovgolovin's user avatar

2

A simple one liner of:

max( (v, i) for i, v in enumerate(a) )[1]

This avoids having to .index() the list after.

answered Jul 17, 2012 at 21:02

Jon Clements's user avatar

Jon ClementsJon Clements

138k32 gold badges244 silver badges278 bronze badges

1

Update:

max_idx = -1
max_val = a[0]
for i in xrange(1, len(a)):
    if a[i] > max_val:
        max_val = a[i]
        max_idx = i

This doesn’t shadow built-in function max(), and also will give correct answers for lists that consist of only negative values.


Previous solution

a.index(max(a))

will do the trick.

Built-in function max(a) will find the maximum value in your list a, and list function
index(v) will find the index of value v in your list. By combining them, you get what you are looking for, in this case the index value 3.

Note that .index() will find the index of the first item in the list that matches, so if you had several identical «max» values, the index returned would be the one for the first.

For more information:

  • max()
  • index()

In the spirit of «Simple is better than complex.» (Zen of Python)

answered Jul 17, 2012 at 21:01

Levon's user avatar

LevonLevon

137k33 gold badges199 silver badges189 bronze badges

2

If you aren’t allowed to use the built in index() function, just iterate with an index, instead of using a foreach loop.

for i in range(len(a)):
    if a[i] > max:
        max = a[i]
        maxIndex = i

answered Jul 17, 2012 at 21:04

Rob Wagner's user avatar

Rob WagnerRob Wagner

4,39114 silver badges24 bronze badges

9

Use the argmax method of the numpy.array object.

import numpy as np
np.array(a).argmax()

answered Oct 1, 2014 at 14:05

AlexP's user avatar

AlexPAlexP

861 silver badge4 bronze badges

You can use enumerate to also give you an index while iterating through a list:

>>> a = [2, 1, 5, 234, 3, 44, 7, 6, 4, 5, 9, 11, 12, 14, 13]
>>> maxIndex, maxNumber = 0, 0
>>> for index, number in enumerate(a):
        if number > maxNumber:
            maxIndex = index
            maxNumber = number

>>> maxIndex, maxNumber
(3, 234)

answered Jul 17, 2012 at 21:04

poke's user avatar

pokepoke

364k69 gold badges553 silver badges599 bronze badges

Use the index(x) function. See the documentation here http://docs.python.org/tutorial/datastructures.html

def main():
    a = [2,1,5,234,3,44,7,6,4,5,9,11,12,14,13]
    max = 0
    for number in a:
        if number > max:
            max = number
    max_index = a.index(max)
    print max

However, this is not as fast as other suggested answers (e.g. using enumerate). Simple though.

answered Jul 17, 2012 at 21:03

MoRe's user avatar

MoReMoRe

1,47813 silver badges25 bronze badges

this is way simpler

x.index(max(x)) #where x is your list

answered May 16, 2017 at 13:59

Mohamed Emad's user avatar

1

If you like powerfull code you would like this :)
If you just have integer numbers you can substitute float by int.

maximum= max(map(float,[2,1,5,234,3,44,7,6,4,5,9,11,12,14,13]))

If you have your input in a text file do this:

file.txt

2 1 5 234 3 44 7 6 4 5 9 11 12 14 13

maximum= max(map(float,(open(‘file.txt’, ‘r’).readline()).split()))

Community's user avatar

answered Apr 1, 2013 at 4:33

Carlos Neves's user avatar

  • Редакция Кодкампа

17 авг. 2022 г.
читать 1 мин


Вы можете использовать следующий синтаксис, чтобы найти индекс максимального значения списка в Python:

#find max value in list
max_value = max(list_name)

#find index of max value in list 
max_index = list_name. index (max_value)

В следующих примерах показано, как использовать этот синтаксис на практике.

Пример 1: поиск индекса максимального значения в списке

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

#define list of numbers
x = [9, 3, 22, 7, 15, 16, 8, 8, 5, 2]

#find max value in list
max_value = max(x)

#find index of max value in list
max_index = x. index (max_value)

#display max value
print(max_value)

22

#display index of max value
print(max_index)

2

Максимальное значение в списке равно 22 , и мы видим, что оно расположено в списке со значением индекса 2 .

Примечание. В Python значения индекса начинаются с 0.

Пример 2: поиск индекса максимального значения в списке со связями

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

#define list of numbers with multiple max values
x = [9, 3, 22, 7, 15, 16, 8, 8, 5, 22]

#find max value in list
max_value = max(x)

#find indices of max values in list
indices = [index for index, val in enumerate(x) if val == max_value]

#display max value
print(max_value)

22

#display indices of max value
print(indices)

[2, 9]

Максимальное значение в списке равно 22 , и мы видим, что оно встречается при значениях индекса 2 и 9 в списке.

Дополнительные ресурсы

Как заархивировать два списка в Python
Как преобразовать список в DataFrame в Python
Как построить гистограмму из списка данных в Python

Given a list of N integers, the task is to write a Python program to find the index of the maximum element in the Python list.

Example:

Input: [  2, 4, 6, 1, 8, 5, 3 ]
Output:  Index of the max element in a list is 4
Explanation: The max element is 8 and its position is 4.

Input: [  10, 1, 5, 3, 8, 9, 7 ]
Output:  Index of the max element in a list is 0
Explanation: The max element is 10 and its position is 0.

Get the index of the max value without using in-built functions

We are given list of integers. Our task is to find the index of the maximum element.

Python3

list1 = 2, 4, 6, 1, 8, 5, 3 ]

ind = 0   

max_element = list1[0]

for i in range (1,len(list1)):

  if list1[i] > max_element:

    max_element = list1[i]

    ind = i

print("Index of the maximum element in the list is: ",ind)

Output

Index of the maximum element in the list is:  4

Time Complexity: O(n),
Auxiliary space: O(1)

Get the index of the max value in the list using the max() and index() 

Here we are given a Python list and our task is to find the index of the maximum element so we are finding the maximum element using max() and then finding the index of that element using index() in Python.

Python3

l = [1, 4, 3, 7, 8, 10, 2]

m = max(l)

print("Index of the max element in a list is", l.index(m))

Output

Index of the max element in a list is 5

Time Complexity: O(n),
Auxiliary space: O(1)

Get the index of the max value in the list using the loop 

Here we are given a list and our task is to find the index of the maximum element so we are finding the maximum element using max() and then finding the index of that element using a while loop and iterating over the list.

Python3

l = [1, 4, 3, 7, 8, 10, 2]

m = max(l)

i = 0

while(i < len(l)):

    if l[i] == m:

        print("Index of the max element in a list is", i)

        break

    i += 1

Output

Index of the max element in a list is 5

Time Complexity: O(n),
Auxiliary space: O(1)

Find the index of the max value in a list  using the enumerate function

Here we are given a list and our task is to find the index of the maximum element so we are iterating over the list using the enumerate() function as the index, pair. If we have the same element at two positions we will return both indexes.

Python3

l = [12, 22, 4, 3, 7, 8, 10, 22]

m = max(l)

for i, j in enumerate(l):

    if j == m:

        print("Index of the max element in a list is", i)

Output

Index of the max element in a list is 1
Index of the max element in a list is 7

Time Complexity: O(n),
Auxiliary space: O(1)

Find the index of the max value in a list using Pandas

Here we are given a list and our task is to find the index of the maximum element so we are finding its index using idxmax() in the Pandas module.

Python3

import pandas as p

l = [12, 4, 3, 7, 8, 10, 22]

print("Index of the max element in a list is", p.Series(l).idxmax())

Output:

Index of the max element in a list is 6

Time Complexity: O(n),
Auxiliary space: O(1)

Find the index of the max value in a list  using Numpy 

Here we are given a list and our task is to find the index of the maximum element so we are finding its index using argmax() in the Numpy module.

Python3

import numpy

l = [12, 4, 3, 7, 8, 10, 22]

idx = numpy.argmax(l)

print("Index of the max element in a list is", idx)

Output:

Index of the max element in a list is 6

Time Complexity: O(n),
Auxiliary space: O(1)

Sort the list in descending order

One new approach that is not discussed in the article is to use the built-in sorted() function to sort the list in descending order, and then access the first element of the sorted list to get the index of the maximum item in the list.

Python3

l = [1, 4, 3, 7, 8, 10, 2]

sorted_list = sorted(l, reverse=True)

max_element = sorted_list[0]

print("Index of the max element in a list is", l.index(max_element))

Output

Index of the max element in a list is 5

Time Complexity: O(nlogn),
Auxiliary space: O(1)

Using Recursion:

We are using recursive method to find the index of maximum element in the list.

Python3

def FindIndex(itr,ind,list1):

  if itr == len(list1):

    print("Index of the maximum element in the list is : ",ind)

    return

  if list1[itr] > list1[ind]:

    ind = itr

  FindIndex(itr+1,ind,list1)

  return

list1 = [2,4,1,9,0,8]

FindIndex(0,0,list1)

Output

Index of the maximum element in the list is :  3

Time Complexity: O(n),
Auxiliary space: O(n)

Last Updated :
11 Apr, 2023

Like Article

Save Article

На чтение 3 мин Просмотров 242 Опубликовано 18.04.2023

Содержание

  1. Введение
  2. Метод sort()
  3. Метод sorted()
  4. Циклом for
  5. Функция max()
  6. Заключение

Введение

В данной статье рассмотрим четыре способа для поиска максимального значения в списке в 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. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂

Admin

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти объем шестигранник
  • Если порвался линолеум как можно исправить
  • Как найти объем учебника по физики
  • Как найти элемент по тексту xpath
  • Как найти только что закрытую вкладку

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии