#python #list
#python #Список
Вопрос:
Есть ли способ получить позицию номера в списке? Например, в следующем коде мы можем получить максимальную числовую позицию?
a = [1, 2, 10, 5]
print(index_max(a))
# 2
Ответ №1:
Вы могли бы использовать метод index:
a.index(max(a)) # 2
Или, если ваш список длинный, и вы не хотите просматривать его дважды, вы можете использовать ключевой параметр функции max:
max(range(len(a)),key=lambda i:a[i]) # 2
Это находит максимальный индекс (от range(len(a))
), но использует косвенное указание, чтобы определить, как сравнивать индекс. Таким образом, сравнение основано на значении каждого индекса, а не на самом индексе. Результатом является индекс, который имеет наибольшее значение.
подробнее о функции max() см.: https://docs.python.org/3/library/functions.html#max
Комментарии:
1.
max(range(len(a)),key=lambda i:a[i])
блестяще, но заслуживает небольшого объяснения2.
a.argmax()
дал бы индекс самого высокого значения напрямую, еслиa
это массив numpy.3. @dawg Первый параметр
max
— это список элементов для перебора.max
имеет необязательный ключевой параметр, который представляет собой функцию, которая принимает значение элемента в списке и возвращает число, которое можно использовать для сравнения. Значение, возвращаемое этой функцией, будет использоваться для определения, какой элемент имеет максимальное значение в списке. После определения максимального элемента с помощью функции keymax
возвращает этот элемент. Первый параметр, переданный в maxrange(len(a))
, возвращает список от 0 до len(a) -1, который является индексами списка a .4. @dawg Ключевая функция просто получает значение по индексу
i
из спискаa
. Таким образом, он использует значение для определения максимального элемента из первого переданного параметраmax
, который является индексами спискаa
. Имеет ли это смысл?5. Я не хотел объяснять мне , я имел в виду добавить к ответу
Ответ №2:
Вы можете использовать index
метод:
a.index(max(a))
Другая возможность — это использование enumerate
:
>>> max(enumerate(a), key=operator.itemgetter(1))
(2, 10)
Ответ №3:
Вы можете попробовать
>>> print(a.index(max(a)))
2
Итак, вы указываете позицию индекса в списке максимального числа
Ответ №4:
Если у вас есть более одного значения, которое может быть тем max
, которое вы можете использовать enumerate
:
a = [1, 2, 10, 5, 10, 6]
>>> [i for i,x in enumerate(a) if x==max(a)]
[2, 4]
Или, если вы хотите, чтобы значение было включено:
>>> [(i,x) for i,x in enumerate(a) if x==max(a)]
[(2, 10), (4, 10)]
Ответ №5:
Python имеет встроенную вызываемую функцию index()
, которую можно использовать для получения позиции индекса элемента в списке. В этом случае вы можете написать a.index(max(a))
.
Комментарии:
1. Извините, я нахожусь на своем телефоне, и мне трудно вводить кодовые блоки: (