有没有办法让一个生成器/迭代器产生enumerate
的反转:
from itertools import izip, count
enumerate(I) # -> (indx, v)
izip(I, count()) # -> (v, indx)
没有拉入itertools
?
答案 0 :(得分:13)
您可以使用简单的generator expression:
执行此操作((v, i) for i, v in enumerate(some_iterable))
这里作为列表理解,可以轻松看到输出:
>>> [(v, i) for i, v in enumerate(["A", "B", "C"])]
[('A', 0), ('B', 1), ('C', 2)]
答案 1 :(得分:11)
((v, indx) for indx, v in enumerate(I))
如果你真的想避免itertools
。你为什么要这样?
答案 2 :(得分:1)
我不确定我是否理解你的问题。但这是我的解决方案。 基于以下代码:https://docs.python.org/2/library/functions.html#enumerate
def enumerate_rev(sequence, start=0):
n = start
for elem in sequence:
yield elem,n
n += 1