Как получить определенную позицию номера в списке?

#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 имеет необязательный ключевой параметр, который представляет собой функцию, которая принимает значение элемента в списке и возвращает число, которое можно использовать для сравнения. Значение, возвращаемое этой функцией, будет использоваться для определения, какой элемент имеет максимальное значение в списке. После определения максимального элемента с помощью функции key max возвращает этот элемент. Первый параметр, переданный в max range(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. Извините, я нахожусь на своем телефоне, и мне трудно вводить кодовые блоки: (