#python #list #indexing #max #minimum
#python #Список #индексирование #макс #минимальный
Вопрос:
Допустим, у меня есть этот список:
A = [3, 4, 3, 5, 7, 665, 87, 665]
Когда я это делаю A.index(min(A))
, я получаю 0
.
И, когда я это делаю A.index(max(A))
, я получаю 5
.
Я ищу способ получить последний индекс элемента min
and max
в списке. т.Е. Я хочу получить ответ как 2
вместо 0
for min
number, так и 7
вместо 5
for max
number
Комментарии:
1. почему? Вы запросили индекс минимального и максимального значения, и он у вас есть…
2. Вы имеете в виду, что хотите получить индекс второго
3
и665
?
Ответ №1:
Чтобы получить индекс последнего появления элемента в списке, вы можете вычесть значение list.index(element)
на обратной стороне списка из длины списка.
Ниже приведен пример кода для получения индекса последнего самого высокого и самого низкого числа в списке:
>>> A = [3,4,3,5,7,665,87,665]
# For min. number
>>> len(A) - A[::-1].index(min(A)) - 1
2
# For max. number
>>> len(A) - A[::-1].index(max(A)) - 1
7
В приведенном выше коде A[::-1]
A
список будет перевернут.
Ответ №2:
Вы можете вычислить минимальный, а также последний индекс минимального значения за один цикл по списку:
last_idx = None
min_value = None
for idx, value in enumerate(l):
if min_value is None or value <= min_value:
last_idx = idx
min_value = value
print(last_idx) # 2
print(min_value) # 3
Аналогично, вы также можете вычислить все индексы минимального значения, сохранив индексы в коллекции, такой как, например, набор:
idces = set()
min_value = None
for idx, value in enumerate(l):
if min_value is None or value == min_value:
idces.add(idx)
min_value = value
elif value < min_value:
idces = {idx}
min_value = value
print(idces) # {0, 2}
print(min_value) # 3
Конечно, случай с максимумом аналогичен.
Ответ №3:
Если вам нужен индекс последнего минимального или максимального значения в списке. Итак, после получения максимального или минимального цикла по списку и найдите другие числа, равные минимальному или максимальному. Каждый раз, когда вы просматриваете список, убедитесь, что вы отслеживаете текущий индекс.