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

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

Вы научитесь делать это с помощью циклов for, функций max() и index(), функции enumerate(), и, наконец, используя популярную библиотеку для науки о данных, numpy.

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

Краткий ответ: Используйте index()

# Без повторений
a_list = [10, 11, 14, 23, 9, 3, 35, 22]
max_index = a_list.index(max(a_list))
print(max_index)

#Возвращает: 6

# С повторениями
a_list = [10, 11, 35, 14, 23, 9, 3, 35, 22, 8 , 7, 34, 35]
indices= [index for index, item in enumerate(a_list) if item ==max(a_list)]
print(indices)

#Возвращает:[2, 7, 12]

Оглавление

Найдите максимальное значение в списке Python

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

Функция max() в Python принимает один или несколько итерабельных объектов в качестве параметров и возвращает наибольший элемент в этом объекте (официальная документация). Когда мы передаем список, функция возвращает максимальное значение в этом списке.

Посмотрим, как это выглядит на практике:

# Получение максимального значения из списка
a_list = [10, 11, 14, 23, 9, 3, 35, 22]

print(max(a_list))

# Возвращает 35

Мы видим, что при передаче нашего списка в функцию Python max(), возвращается значение 35

Мы будем использовать эту функцию для оценки на протяжении всего остального урока.

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

Найдите индекс максимального элемента в списке Python, используя индекс

Теперь, когда вы знаете, как определить максимальное значение в списке Python, мы можем использовать это вместе с методом .index(), чтобы найти индекс максимального значения.

Важно отметить, что этот метод вернёт первое вхождение максимального значения в указанном итерируемом объекте. Если объект содержит дубликаты элементов, будет возвращён только первый. Все остальные методы, показанные ниже, вернут все индексы, если существуют дубликаты.

Давайте посмотрим, как мы можем использовать метод .index(), чтобы вернуть индекс максимального значения:

# Получение индекса максимального значения из списка
a_list = [10, 11, 14, 23, 9, 3, 35, 22]

max_value = max(a_list)
max_index = a_list.index(max_value)

print(max_index)

# Возвращает: 6

# Можно также написать:
# max_index = a_list.index(max(a_list))

Здесь мы применили метод .index() к нашему списку a_list. Метод принимает аргумент, который указывает, какой элемент нужно найти. Метод вернёт первую (и в данном случае единственную) позицию индекса этого значения.

В следующем разделе вы узнаете, как использовать цикл for в Python, чтобы найти индекс или индексы максимального элемента в списке.

Найти индекс максимального элемента в списке Python с помощью цикла For

В приведённом выше методе вы узнали, как использовать метод Python .index() для возврата первого индекса максимального значения в списке.

Основным ограничением этого подхода было то, что он всегда возвращал только первый найденный индекс. Это может быть значительным ограничением, если известно, что в списке имеются дублирующие значения. Поэтому в этом разделе будет показано, как использовать цикл for в Python для поиска индексов наибольшего значения в списке Python.

Давайте посмотрим, как это работает в Python:

# Получение индексов максимального значения из списка с использованием цикла for
a_list = [10, 11, 35, 14, 23, 9, 3, 35, 22]
indices = []

max_value = max(a_list)

for i in range(len(a_list)):
    if a_list[i] == max_value:
        indices.append(i)

print(indices)
# Возвращает: [2, 7]

Что мы сделали здесь:

  1. Инициализировали два списка: наш список a_list, который содержит наши значения, и пустой список, который мы будем использовать для хранения индексов.

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

  3. Затем мы перебрали каждый элемент в списке, чтобы проверить, соответствует ли он элементу.

  4. Если это так, мы возвращаем его индекс

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

Найти индекс максимального элемента в списке Python с помощью Enumerate

Функция Python enumerate() является невероятной функцией, которая позволяет перебирать итерируемые объекты, такие как списки, и получать доступ как к индексу, так и к элементу. Это, конечно, очень полезно, поскольку мы пытаемся записать позиции индексов заданного значения в списке.

Хотя мы могли бы использовать цикл for для этого подхода, мы воспользуемся списковым включением, что позволяет нам быть гораздо более краткими в нашем подходе.

Давайте сначала посмотрим, как выглядит код, а затем разберемся, почему и как он работает:

# Получение индексов максимального значения из списка с использованием функции enumerate()
a_list = [10, 11, 35, 14, 23, 9, 3, 35, 22]
indices = [index for index, item in enumerate(a_list) if item == max(a_list)]

print(indices)
# Возвращает: [2, 7]

В коде выше мы:

  1. Перебирайте каждый индекс и элемент в нашем списке

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

  3. Если элемент не равен наибольшему значению, то мы ничего не делаем

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

Найдите индекс максимального элемента в списке Python, используя numpy

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

numpy хорошо работает с одним из своих собственных типов данных, массивами, которые являются структурами, похожими на списки. Одним из преимуществ этих массивов является то, что они имеют множество встроенных функций и методов, которых нет у обычных списков.

Одной из этих функций является argmax(), которая позволяет найти первое вхождение наибольшего значения в массиве.

# Получение индекса максимального значения из списка с использованием numpy
import numpy as np

a_list = [10, 11, 35, 14, 23, 9, 3, 35, 22]
an_array = np.array(a_list)
index = np.argmax(an_array)

print(index)
# Возвращает: 2

Это работает благодаря:

  1. Преобразование списка в массив

  2. Использование функции argmax() возвращает индекс первого максимального значения

Заключение

В этом руководстве вы узнали, как найти индекс максимального значения в списке Python. Вы узнали, как сделать это, если все значения уникальны или если в разных списках могут существовать дубликаты. Вы узнали, как использовать функцию index(), а также цикл for для этой задачи. Вы также узнали, как использовать функцию enumerate() в list comprehension Python и популярную библиотеку для науки о данных, numpy.

Чтобы узнать больше о numpy, посмотрите официальную документацию здесь.

Last updated