• Как найти последний максимальный элемент в list?

    adugin
    @adugin Куратор тега Python
    dmitrylogvinov, Вы в корне неправильно подходите к обучению. Вам нужно больше времени проводить с учебником и изучать стандартные библиотеки (и в первую очередь - встроенные функции, обращая особое внимание на их параметры), а не пытаться решать задачи "в лоб", раз за разом городя конструкции в стиле Delphi из базового синтаксиса, примерно одинакового для каждого языка. "Батарейки" в Python присутствуют как раз для того, чтобы не изобретать велосипеды.

    Задача решается просто и элегантно:
    from itertools import count
    
    def lastmax(*sequence):
        return max(zip(sequence, count()))
    
    assert lastmax(1, 2, 3) == (3, 2)
    assert lastmax(1, 2, 1, 2, 1) == (2, 3)
    assert lastmax(1, 2, 3, 4, 5) == (5, 4)
    assert lastmax(1, 1, 1, 1, 1) == (1, 4)

    Те же самое, но без itertools:
    def lastmax(*sequence):
        return max(zip(sequence, range(len(sequence))))

    Ещё вариант:
    from operator import itemgetter
    
    def lastmax(*sequence):
        return max(enumerate(sequence), key=itemgetter(1, 0))[::-1]

    И ещё:
    def lastmax(*sequence):
        return max({v: i for i, v in enumerate(sequence)}.items())

    Есть и ещё несколько более эзотерических вариантов - например, через heapq.
    Ответ написан
    Комментировать