有没有办法得到一个产生相反的生成器/迭代器enumerate
:
from itertools import izip, count
enumerate(I) # -> (indx, v)
izip(I, count()) # -> (v, indx)
没有拉进来itertools
?
有没有办法得到一个产生相反的生成器/迭代器enumerate
:
from itertools import izip, count
enumerate(I) # -> (indx, v)
izip(I, count()) # -> (v, indx)
没有拉进来itertools
?
你可以用一个简单的生成器表达式来做到这一点:
((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)]
((v, indx) for indx, v in enumerate(I))
如果你真的想避免itertools
。你为什么要?
我不确定我是否正确理解了您的问题。但这是我的解决方案。基于以下代码: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