Python Поиск индекса максимального числа в списке

def main(): a = [2,1,5,234,3,44,7,6,4,5,9,11,12,14,13] max = 0 for number in a: if number > max: max = number print max if __name__ == '__main__': main() 

Я могу получить максимальное значение в массиве ( без использования max (), конечно …). Как я могу получить индекс (позицию) этого значения? Пожалуйста, попробуйте сделать это простым, не используя новые ключевые слова Python или встроенные функции. Благодаря!

  • Pandas интерполирует данные с единицами
  • многопроцессорные схемы графического интерфейса для борьбы с блокировкой «Неответ»
  • Аккуратный способ выскакивания ключа, значение PAIR из словаря?
  • Объединение веб-узлов и WSGI в приложении python
  • Перекрытие обнаружения сообщества с помощью играфа или других библиотек
  • Python 2 и 3 csv reader
  • Различные цвета для стрелок на участке колчана
  • данные о рассеянном участке не отображаются на континентах в базовой карте «молоток»
  • 9 Solutions collect form web for “Python Поиск индекса максимального числа в списке”

    Если вам не разрешено использовать встроенную функцию index (), просто используйте итерацию с индексом вместо использования цикла foreach.

     for i in range(len(a)): if a[i] > max: max = a[i] maxIndex = i 

    В моем коде я бы использовал это:

     >>> max(enumerate(a),key=lambda x: x[1])[0] 3 

    Простой один вкладыш:

     max( (v, i) for i, v in enumerate(a) )[1] 

    Это позволяет избежать необходимости .index() списка после.

    Обновить:

     max_idx = -1 max_val = a[0] for i in xrange(1, len(a)): if a[i] > max_val: max_val = a[i] max_idx = i 

    Это не скрывает встроенную функцию max() , а также дает правильные ответы для списков, которые состоят только из отрицательных значений.


    Предыдущее решение

     a.index(max(a)) 

    будет делать трюк.

    Встроенная функция max(a) найдет максимальное значение в вашем списке a , а index(v) функции списка index(v) найдет индекс значения v в вашем списке. Объединив их, вы получите то, что ищете, в этом случае значение индекса 3 .

    Обратите внимание, что .index() найдет индекс первого элемента в списке, который соответствует, поэтому, если у вас было несколько одинаковых значений «max», возвращаемый индекс был бы первым.

    Чтобы получить больше информации:

    • Максимум()
    • индекс()

    В духе «Простой лучше, чем сложный». (Дзен Питона)

    Используйте метод argmax объекта numpy.array.

     import numpy as np np.array(a).argmax() 

    Вы можете использовать enumerate чтобы также дать вам индекс при повторении через список:

     >>> a = [2, 1, 5, 234, 3, 44, 7, 6, 4, 5, 9, 11, 12, 14, 13] >>> maxIndex, maxNumber = 0, 0 >>> for index, number in enumerate(a): if number > maxNumber: maxIndex = index maxNumber = number >>> maxIndex, maxNumber (3, 234) 

    Используйте функцию index (x). См. Документацию здесь http://docs.python.org/tutorial/datastructures.html

     def main(): a = [2,1,5,234,3,44,7,6,4,5,9,11,12,14,13] max = 0 for number in a: if number > max: max = number max_index = a.index(max) print max 

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

    это проще

     x.index(max(x)) #where x is your list 

    Если вам нравится мощный код, вам это понравится 🙂 Если у вас есть только целые числа, вы можете заменить float на int.

    max = max (map (float, [2,1,5,234,3,44,7,6,4,5,9,11,12,14,13]))

    Если у вас есть ваш вход в текстовый файл, выполните следующие действия:

    file.txt

    2 1 5 234 3 44 7 6 4 5 9 11 12 14 13

    max = max (map (float, (open ('file.txt', 'r'). readline ()). split ()))

    Python - лучший язык программирования в мире.