如何在python2中获得反向枚举?

asn*_*zin 3 python python-2.7

我有一个这样的结构列表:

[(key1, val1), (key2, val2), ...]
Run Code Online (Sandbox Code Playgroud)

我想迭代它获取关键和每一步的项目索引.以相反的顺序.

现在我这样做:

for index, key in reversed(list(enumerate(map(lambda x: x[0], data)))):
    print index, key
Run Code Online (Sandbox Code Playgroud)

它运作得很好,但我只是担心它是否是一种正确的方法.可以有更好的解决方案吗?

Mar*_*ers 6

enumerate()不能倒计时,只能起来.改为使用itertools.count()对象:

from itertools import izip, count

for index, item in izip(count(len(data) - 1, -1), reversed(data)):
Run Code Online (Sandbox Code Playgroud)

这会产生一个从长度(减1)开始的计数,然后沿着相反的顺序向下计数.

演示:

>>> from itertools import izip, count
>>> data = ('spam', 'ham', 'eggs', 'monty')
>>> for index, item in izip(count(len(data) - 1, -1), reversed(data)):
...     print index, item
... 
3 monty
2 eggs
1 ham
0 spam
Run Code Online (Sandbox Code Playgroud)