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

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

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

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

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

```python
# Без повторений
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](#naidite-maksimalnoe-znachenie-v-spiske-python)
* [Найдите индекс максимального элемента в списке Python, используя индекс](#naidite-indeks-maksimalnogo-elementa-v-spiske-python-ispolzuya-indeks)
* [Найти индекс максимального элемента в списке Python с помощью цикла For](#naiti-indeks-maksimalnogo-elementa-v-spiske-python-s-pomoshyu-cikla-for)
* [Найти индекс максимального элемента в списке Python с помощью Enumerate](#naiti-indeks-maksimalnogo-elementa-v-spiske-python-s-pomoshyu-enumerate)
* [Найдите индекс максимального элемента в списке Python, используя numpy](#naidite-indeks-maksimalnogo-elementa-v-spiske-python-ispolzuya-numpy)
* [Заключение](#zaklyuchenie)

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

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

Функция `max()` в Python принимает один или несколько итерабельных объектов в качестве параметров и возвращает наибольший элемент в этом объекте ([официальная документация](https://docs.python.org/3/library/functions.html#max)). Когда мы передаем список, функция возвращает максимальное значение в этом списке.

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

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

print(max(a_list))

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

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

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

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

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

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

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

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

```python
# Получение индекса максимального значения из списка
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:

```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() является невероятной функцией, ](../vstroennye-funkcii-python/enumerate)которая позволяет перебирать итерируемые объекты, такие как списки, и **получать доступ как к индексу, так и к элементу**. Это, конечно, очень полезно, поскольку мы пытаемся записать позиции индексов заданного значения в списке.

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

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

```python
# Получение индексов максимального значения из списка с использованием функции 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()`, которая позволяет найти первое вхождение наибольшего значения в массиве.

```python
# Получение индекса максимального значения из списка с использованием 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`, посмотрите [официальную документацию здесь](https://numpy.org/).
