Python enumerate reverse index only

前端 未结 10 2224
情深已故
情深已故 2021-02-05 05:43

I am trying to reverse the index given by enumerate whilst retaining the original order of the list being enumerated.

Assume I have the following:



        
10条回答
  •  谎友^
    谎友^ (楼主)
    2021-02-05 06:42

    How about using zip instead with a reversed range?

    >>> zip(range(9, -1, -1), range(10))
    [(9, 0), (8, 1), (7, 2), (6, 3), (5, 4), (4, 5), (3, 6), (2, 7), (1, 8), (0, 9)]
    
    
    >>> def reversedEnumerate(l):
            return zip(range(len(l)-1, -1, -1), l)
    >>> reversedEnumerate(range(10))
    [(9, 0), (8, 1), (7, 2), (6, 3), (5, 4), (4, 5), (3, 6), (2, 7), (1, 8), (0, 9)]
    

    As @julienSpronk suggests, use izip to get a generator, also xrange:

    import itertools
    >>> import itertools
    >>> def reversedEnumerate(l):
    ...     return itertools.izip(xrange(len(l)-1, -1, -1), l)
    ...     
    >>> reversedEnumerate(range(10))
    
    >>> for i in reversedEnumerate(range(10)):
    ...     print i
    ...     
    (9, 0)
    (8, 1)
    (7, 2)
    (6, 3)
    (5, 4)
    (4, 5)
    (3, 6)
    (2, 7)
    (1, 8)
    (0, 9)
    

提交回复
热议问题