def reverse_enumerate(iterable):
    """
    The same as `enumerate` except in reverse order

    reverse_enumerate(iterable) -> iterator for index, value of iterable

    Return an enumerate object.  iterable must be another object that supports
    iteration.  The enumerate object yields pairs containing a count and a value yielded by the iterable argument.
    reverse_enumerate is useful for obtaining an indexed list in reverse order:
        (len(seq) - 1, seq[-1]), (len(seq) - 2, seq[-2]), (len(seq) - 3, seq[-3]), ...
    """
    return zip(range(len(iterable) - 1, -1, -1), reversed(iterable))
