Содержание

Получаем максимальный элемент списка Python [7 примеров]

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

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

Список в Python

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

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

Копировать Скопировано Use a different Browser

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 в качестве аргумента.

Копировать Скопировано Use a different Browser

list1 = [3, 2, 8, 5, 10, 6]
max_number = max(list1)
print("Наибольшее число:", max_number)
Наибольшее число: 10

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

Копировать Скопировано Use a different Browser

list1 = ["Виктор", "Артем", "Роман"]
max_string = max(list1, key=len)
print("Самая длинная строка:", max_string)
Самая длинная строка: Виктор

№2 Поиск максимального значения перебором

Это самая простая реализация, но она немного медленнее, чем функция

max(), поскольку мы используем этот алгоритм в цикле.

В примере выше для поиска максимального значения нами была определена функция large(). Она принимает список в качестве единственного аргумента. Для сохранения найденного значения мы используем переменную max_, которой изначально присваивается первый элемент списка. В цикле for каждый элемент сравнивается с этой переменной. Если он больше max_, то мы сохраняем значение этого элемента в нашей переменной. После сравнения со всеми членами списка в

max_ гарантировано находится наибольший элемент.

Копировать Скопировано Use a different Browser

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, которое означает поиск максимального числа, а второй аргумент — итерабельный объект.

Копировать Скопировано Use a different Browser

from functools import reduce
list1 = [-1, 3, 7, 99, 0]
print(reduce(max, list1))  # вывод: 99

Другое решение показывает интересную конструкцию с использованием лямбда-функции. Функция reduce() принимает в качестве аргумента лямбда-функцию, а та в свою очередь получает на вход условие и список для проверки максимального значения.

Копировать Скопировано Use a different Browser

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() для нахождения максимального значения.

Копировать Скопировано Use a different Browser

import heapq
list1 = [-1, 3, 7, 99, 0]
print(heapq.nlargest(1, list1))  # -> [99]

Приведенный выше пример импортирует модуль heapq и принимает на вход список. Функция принимает n=1 в качестве первого аргумента, так как нам нужно найти одно максимальное значение, а вторым аргументом является наш список.

№5 Нахождение максимального значения с помощью функции sort()

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

Последним элементом в списке является list[-1].

Копировать Скопировано Use a different Browser

list1 = [10, 20, 4, 45, 99]
list1.sort()
print("Наибольшее число:", list1[-1])
Наибольшее число: 99

№6 Нахождение максимального значения с помощью функции sorted()

Этот метод использует функцию sorted() для поиска наибольшего элемента. В качестве входных данных он принимает список значений. Затем функция sorted() сортирует список в порядке возрастания и выводит наибольшее число.

Копировать Скопировано Use a different Browser

list1=[1,4,22,41,5,2]
sorted_list = sorted(list1)
result = sorted_list[-1]
print(result)  # -> 41

№7 Поиск максимального значения с помощью хвостовой рекурсии

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

Копировать Скопировано Use a different Browser

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

python — Как удалить все элементы, идущие после максимального элемента?

Вопрос задан

Изменён 2 года назад

Просмотрен 151 раз

Необходимо осуществить поиск максимального элемента и затем удалить все элементы идущие после максимального в двумерном массиве 3×3.

Мой код максимальный элемент находит, но я не знаю как удалить элементы после него:

matrix = [
    [3, 7, 5],
    [9, 8, 1],
    [6, 2, 4]
]
 
mx = matrix[0][0]
 
for row in matrix:
    mx_ = max(row)
    if mx_ > mx:
        mx = mx_

Что должно получиться в итоге:

matrix = [
    [3, 7, 5],
    [9, 0, 0],
    [0, 0, 0]
]
  • python
  • python-3.x
  • массивы
9

matrix = [
    [3, 7, 5],
    [9, 8, 1],
    [6, 2, 4]
]
row_with_max = max(matrix, key=lambda x: max(x))  # строка с максимальным значением
i_max = matrix.
index(row_with_max) # индекс строки j_max = row_with_max.index(max(row_with_max)) # индекс столбца flat_index = i_max*len(matrix)+j_max # индекс в плоском списке

и «забейте нулями» все, что идет после:

for i in range(len(matrix)):
    for j in range(len(matrix[0])):
        if flat_index < i*len(matrix)+j:
            matrix[i][j] = 0

теперь в matrix:

>>> matrix
[
    [3, 7, 5], 
    [9, 0, 0], 
    [0, 0, 0]
]

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

def get_max(matrix):
    max_in_matrix = 0
    for row in matrix:
        max_in_row = max(row)
        if max_in_matrix < max_in_row:
            max_in_matrix = max_in_row
    return max_in_matrix
def reset_next(matrix, max_el):
    next_null = False
    for row in matrix:
        for i in range(len(row)):
            if next_null:
                row[i] = 0
            elif row[i] == max_el:
                next_null = True
            continue
    return matrix
max_el = get_max(matrix)
matrix = reset_next(matrix=matrix, max_el=max_el)
2

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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

Распространить любовь

Как получить индекс максимального (максимального) элемента списка в Python? Если вы хотите вернуть максимальную позицию индекса элемента из данного списка, вы можете использовать max(), чтобы получить максимальное значение, и использовать это значение с методом index(), чтобы получить позицию индекса максимального элемента. Помимо этого метода, мы обсудим некоторые другие методы, которые будут возвращать позицию максимального индекса элемента.

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

  1. Использование метода max()
  2. Использование цикла for
  3. Использование pandas.Series.idxmax()
  4. Использование numpy.array.argmax()

Учебное пособие по PySpark для начинающих (Спа…

Пожалуйста, включите JavaScript

Учебное пособие по PySpark для начинающих (Spark с Python)

1.

Краткие примеры поиска позиции индекса максимального элемента

Ниже приведены краткие примеры того, как получить позицию максимального индекса элемента. # Быстрые примеры # Рассмотрим список целых чисел оценки = [82,31,40,78,90,32,120] # Использование метода index() print(«Максимальная позиция индекса: «,marks.index(max(marks))) # Использование цикла max_val= оценки[0] для i в диапазоне (1, len (знаки)): если (marks[i] > max_val): max_val = отметки[i] print(«Максимальная позиция индекса: «,marks.index(maximum_val)) # Использование pandas.Series.idxmax() импортировать панд как pd print(«Максимальная позиция индекса: «,pd.Series(marks).idxmax()) # Использование numpy.array.argmax() импортировать numpy как np print(«Максимальная позиция индекса: «,np.array(marks).argmax())

2. Python Получить индекс max() списка

Мы можем использовать функцию Python max() для получения максимального элемента и использовать метод list.index() для получения позиции индекса максимального элемента путем передачи максимальный элемент в метод index().

2.1 Синтаксис

Давайте посмотрим на синтаксис использования max() с index().

# Синтаксис
mylist1.index (макс (mylist1))
 

Здесь mylist1 — это список ввода.

2.2 Получение максимального индекса списка Пример

Давайте создадим список целых чисел и вернем позицию индекса максимального элемента. Здесь max(marks) возвращает максимальное значение списка Python, а index(max(marks)) возвращает индексную позицию максимального значения из списка.

# Рассмотрим список целых чисел
оценки = [12,31,40,78,90,32]
 
# Использование метода index()
print("Максимальная позиция индекса: ",marks.index(max(marks)))
# Выход:
# Максимальная позиция индекса: 4
 

Из 6 целых чисел максимальный элемент равен 90, а его индексная позиция равна 4.

3. Использование цикла for & index() для получения максимального индекса

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

3.1 Цикл for Примеры

Пример 1: Создадим список целых чисел и вернем позицию индекса максимального элемента.

# Рассмотрим список целых чисел
оценки = [82,31,40,78,90,32,120]
 
# Использование цикла
max_val= оценки[0]
для i в диапазоне (1, len (знаки)):
    если (marks[i] > max_val):
        max_val = отметки[i]
print("Максимальное значение:",maximum_val)
print("Максимальная позиция индекса: ",marks.index(maximum_val))
# Выход:
# Максимальное значение: 120
# Максимальная позиция индекса: 6
 

Из 7 целых чисел максимальный элемент равен 120, а его индексная позиция равна 6.

Пример 2: Давайте создадим список из 3 строк и вернем индексную позицию максимального элемента.

# Рассмотрим список строк
языки = ["панджаби", "тамильский", "малаялам"]
 
max_element= языки[0]
# Использование цикла
для i в диапазоне (1, len (языки)):
    если (языки[i] > максимальный_элемент):
        максимальный_элемент = языки[i]
print("Максимальная позиция индекса: ",languages. index(maximum_element))
# Выход:
# Максимальная позиция индекса: 1
 

Среди 3 языков « тамильский » является максимальным (значение ASCII t больше, чем два других элемента), поэтому возвращается его индексная позиция, т. е. 1

4. Использование Series.idxmax() для получения максимального значения индекса

Pandas — это модуль, используемый для анализа данных, доступный в Python. В этом модуле серия — это структура данных, которая будет содержать элементы линейным образом. Он примет метод idxmax(), который вернет позицию индекса максимального элемента, присутствующего в серии.

Итак, мы преобразуем наш список в серию, передав наш список в серию и применив метод idxmax() для возврата позиции индекса с максимальным значением.

4.1 Синтаксис

Давайте посмотрим на синтаксис использования pandas.Series.idxmax()

# Синтаксис
pd.Series(mylist1).idxmax()
 

Здесь mylist1 — это входной список.

4.2 Пример

Давайте создадим список целых чисел и вернем позицию индекса максимального элемента, используя idxmax().

импортировать панд как pd
# Рассмотрим список целых чисел
оценки = [31,40,78,90,32,120]
 
# Использование pandas.Series.idxmax()
print("Максимальная позиция индекса: ",pd.Series(marks).idxmax())
# Выход:
# MМаксимальная позиция индекса: 5
 

Из 6 целых чисел максимальный элемент равен 120, а его индексная позиция равна 5.

5. Использование numpy.array().argmax()

NumPy в Python — это модуль, который будет выполнять математические операции с массивами. Здесь argmax() — это метод, поддерживаемый numpy, который возвращает индекс максимального элемента в массиве numpy. Чтобы использовать NumPy, вам нужно сначала установить его и импортировать.

Мы можем использовать этот метод, преобразовав наш список в массив numpy.

5.1 Синтаксис

Давайте посмотрим на синтаксис использования numpy.array().argmax()

# Синтаксис
# Здесь mylist1 — это входной список.
np.array(mylist1).argmax()
 

5.2 Пример

Давайте создадим список целых чисел и вернем позицию индекса максимального элемента, используя numpy. argmax(). Поскольку NumPy работает с массивами, сначала вам нужно преобразовать список в массив с помощью функции np.array().

импортировать numpy как np
# Рассмотрим список целых чисел
оценки = [91,40,78,90,32,120]
 
# Использование numpy.array.argmax()
print("Максимальная позиция индекса: ",np.array(marks).argmax())
# Выход:
# Максимальное количество баллов Индексная позиция: 5
 

Из 6 целых чисел максимальный элемент равен 120, а его позиция индекса равна 5.

6. Заключение

В этой статье вы узнали, как вернуть позицию индекса максимального (max) значения из списка Python, используя 4 разные подходы. Сначала мы обсудили использование цикла for и index(), а затем непосредственно использование max() и index(). Можно использовать idxmax(), преобразовав наш список в серию pandas и argmax(), преобразовав наш список в массив numpy.

python — Получение индекса возвращенного максимального или минимального элемента с помощью max()/min() в списке

спросил

Изменено 3 месяца назад

Просмотрено 1,4 млн раз

Я использую функции Python max и min в списках для минимаксного алгоритма, и мне нужен индекс значения, возвращаемого макс() или мин() . Другими словами, мне нужно знать, какой ход дал максимальное (во время хода первого игрока) или минимальное (второго игрока) значение.

 для i в диапазоне (9):
    new_board = current_board.new_board_with_move([i / 3, i % 3], игрок)
    если новая_доска:
        temp = min_max (новая_доска, глубина + 1, а не is_min_level)
        значения.добавлять(темп)
если is_min_level:
    вернуть минимум (значения)
еще:
    вернуть максимум (значения)
 

Мне нужно иметь возможность вернуть фактический индекс минимального или максимального значения, а не только значение.

  • питон
  • список
  • макс.
  • мин.
1

Скажем, у вас есть список значений = [3,6,1,5] и вам нужен индекс наименьшего элемента, т.е. index_min = 2 в этом случае.

Избегайте решения с itemgetter() , представленного в других ответах, и используйте вместо него

 index_min = min(range(len(values)), key=values. __getitem__)
 

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

Если вы имеете дело с массивами numpy или можете позволить себе numpy в качестве зависимости, рассмотрите также возможность использования

 import numpy as np
index_min = np.argmin (значения)
 

Это будет быстрее, чем первое решение, даже если вы примените его к чистому списку Python, если:

  • больше нескольких элементов (около 2**4 элементов на моей машине)
  • вы можете позволить себе копию памяти из чистого списка в массив numpy

, как указывает этот тест:

Я выполнил тест на своей машине с python 2.7 для двух решений выше (синий: чистый python, первое решение) (красный, решение numpy) и для стандартного решения на основе itemgetter() (черный, эталонное решение ). Тот же тест с Python 3.5 показал, что методы сравниваются точно так же, как и в случае Python 2.7, представленном выше 9.0003 6

 если is_min_level:
    возвращаемые значения.index (мин (значения))
еще:
    возвращаемые значения.index (макс. (значения))
 
8

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

 оператор импорта
min_index, min_value = min (перечисление (значения), ключ = operator.itemgetter (1))
max_index, max_value = max (перечисление (значения), ключ = operator.itemgetter (1))
 

Таким образом, список будет пройден только один раз в течение мин. (или макс.).

2

Если вы хотите найти индекс max в списке чисел (что кажется вашим случаем), я предлагаю вам использовать numpy:

 import numpy as np
ind = np.argmax (мой список)
 
1

Возможно, более простым решением было бы превратить массив значений в массив пар значений и индексов и взять из него максимальное/минимальное значение. Это даст наибольший/наименьший индекс, который имеет максимальное/минимальное значение (т. е. пары сравниваются, сначала сравнивая первый элемент, а затем сравнивая второй элемент, если первые одинаковы). Обратите внимание, что на самом деле нет необходимости создавать массив, потому что min/max позволяют использовать генераторы в качестве входных данных.

 значений = [3,4,5]
(m,i) = max((v,i) для i,v в перечислении(значения))
напечатать (м, я) # (5, 2)
 
0

 посл=[1,1412, 4,3453, 5,8709, 0,1314]
seq.index (мин (seq))
 

Дает вам первый индекс минимума.

1

Меня это тоже заинтересовало, и я сравнил некоторые из предложенных решений, используя perfplot (мой любимый проект).

Получается, что

 мин (диапазон (длина (а)), ключ = a.__getitem__)
 

— самый быстрый метод для маленьких и больших списков.

(В прежних версиях np.argmin использовался для получения торта. )


Код для создания графика:

оператор импорта
импортировать перфплот
определение min_enumerate (а):
    вернуть мин (перечисление (а), ключ = лямбда х: х [1]) [0]
определение min_enumerate_itemgetter (а):
    min_index, min_value = min(enumerate(a), key=operator.itemgetter(1))
    вернуть мин_индекс
деф получитьэлемент (а):
    вернуть мин (диапазон (длина (а)), ключ = a.__getitem__)
защита np_argmin (а):
    вернуть np.argmin (а)
б = perfplot.bench (
    setup=лямбда n: np.random.rand(n).tolist(),
    ядра=[
        мин_перечисление,
        min_enumerate_itemgetter,
        получить,
        np_argмин,
    ],
    n_range=[2**k для k в диапазоне (15)],
)
б.показать()
 
3

Я думаю, что лучше всего преобразовать список в массив numpy и использовать эту функцию:

 a = np.array(list)
idx = np.argmax (а)
 
0

Я думаю, что приведенный выше ответ решает вашу проблему, но я решил поделиться методом, который дает вам минимум и все индексы, в которых появляется минимум.

 minval = min(mylist)
ind = [i для i, v в перечислении (mylist), если v == minval]
 

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

4

После получения максимальных значений попробуйте следующее:

 max_val = max(list)
index_max = список.index(max_val)
 

Гораздо проще, чем множество опций.

Использовать массив numpy и функцию argmax()

 a=np.array([1,2,3])
 б = np.argmax (а)
 печать (б) # 2
 
0

Pandas теперь имеет гораздо более мягкое решение, попробуйте его:

df

.idxmax()

Это возможно с помощью встроенной функции enumerate() и max() и необязательный аргумент key функции max() и простое лямбда-выражение:

 список = [1, 5, 10]
maxIndex, maxValue = max(enumerate(theList), key=lambda v: v[1])
# => (2, 10)
 

В документах для max() говорится, что аргумент key ожидает функцию, аналогичную функции list. sort() . Также см. раздел Сортировка.

То же самое работает для min() . Кстати, он возвращает первое максимальное/минимальное значение.

2

Использовать функцию модуля numpy numpy.where

 импортировать numpy как n
х = n.массив ((3,3,4,7,4,56,65,1))
 

Для индекса минимального значения:

 idx = n.where(x==x.min())[0]
 

Для индекса максимального значения:

 idx = n.where(x==x.max())[0]
 

На самом деле эта функция намного мощнее. Вы можете создавать все виды логических операций Для индекса значения от 3 до 60:

 idx = n.where((x>3)&(x<60))[0]
IDX
массив([2, 3, 4, 5])
х [идентификатор]
массив([ 4, 7, 4, 56])
 
4

Просто так:

 штук = [2, 4, 8, 15, 11]
индекс = вещи.индекс (макс (вещи))
 

Допустим, у вас есть список, например:

 a = [9,8,7]
 

Следующие два метода представляют собой довольно компактные способы получения кортежа с минимальным элементом и его индексом. Оба требуют аналогичного времени для обработки. Мне больше нравится метод zip, но это на мой вкус.

метод zip

 элемент, индекс = мин (список (zip (a, диапазон (len (a)))))
мин (список (zip (a, диапазон (len (a)))))
(7, 2)
время мин (список (zip (a, диапазон (len (a))))))
1,36 мкс ± 107 нс на цикл (среднее значение ± стандартное отклонение для 7 циклов, 1000000 циклов в каждом)
 

метод перечисления

 индекс, элемент = min(list(enumerate(a)), ключ=лямбда x:x[1])
мин (список (перечисление (а)), ключ = лямбда х: х [1])
(2, 7)
timeit мин (список (перечисление (а)), ключ = лямбда х: х [1])
1,45 мкс ± 78,1 нс на цикл (среднее значение ± стандартное отклонение для 7 циклов, 1000000 циклов в каждом)
 

Зачем сначала добавлять индексы, а потом их переворачивать? Функция Enumerate() — это всего лишь частный случай использования функции zip(). Используем его соответствующим образом:

 my_indexed_list = zip(my_list, range(len(my_list)))
минимальное_значение, минимальное_индекс = минимальное (мой_индексированный_список)
max_value, max_index = max(my_indexed_list)
 

Если вы знаете, как использовать лямбда-выражение и аргумент «ключ», простое решение:

 max_index = max( range( len(my_list) ), key = lambda index : my_list[ index ] )
 
1

Небольшое дополнение к тому, что уже было сказано. values.index(min(values)) , кажется, возвращает наименьший индекс min. Следующий получает самый большой индекс:

 values.reverse()
    (values.index(min(значения)) + len(значения) - 1) % len(значения)
    значения.reverse()
 

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

Для перебора всех вхождений

 индексы = []
    я = -1
    для _ в диапазоне (values.count (min (values))):
      я = значения [я + 1:]. индекс (мин (значения)) + я + 1
      index.append(i)
 

Для краткости. Вероятно, лучше кэшировать min(values), values.count(min) вне цикла.

1

Простой способ поиска индексов с минимальным значением в списке, если вы не хотите импортировать дополнительные модули:

 min_value = min(values)
indexes_with_min_value = [i для i в диапазоне (0, len (значения)) if values[i] == min_value]
 

Затем выберите, например, первый:

 selected = indexes_with_min_value[0]
 

Предположим, что у вас есть следующий список my_list = [1,2,3,4,5,6,7,8,9,10] , и мы знаем, что если мы сделаем max(my_list) , он вернет 10 и min(my_list) вернет 1 . Теперь мы хотим получить индекс максимального или минимального элемента, мы можем сделать следующее.

 мой_список = [1,2,3,4,5,6,7,8,9,10]
max_value = max(my_list) # возвращает 10
max_value_index = my_list.index(max_value) # возвращает 9
#чтобы получить индекс минимального значения
min_value = min(my_list) # возвращает 1
min_value_index = my_list.index(min_value) # retuns 0 

https://docs.python.org/3/library/functions.html#max

Если несколько элементов являются максимальными, функция возвращает первый встреченный. Это согласуется с другими инструментами сохранения стабильности сортировки, такими как sorted(iterable, key=keyfunc, reverse=True)[0]

Чтобы получить больше, чем просто первый случай, используйте метод sort.

 оператор импорта
х = [2, 5, 7, 4, 8, 2, 6, 1, 7, 1, 8, 3, 4, 9, 3, 6, 5, 0, 9, 0]
мин = Ложь
макс = Истина
min_val_index = отсортированный (список (zip (x, диапазон (len (x))))), key = operator.itemgetter (0), reverse = min)
max_val_index = отсортировано (список (zip (x, диапазон (len (x))))), key = operator.