有沒有辦法得到一個發電機/迭代器,產生的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))
的列表理解很容易地看到輸出:
有沒有辦法得到一個發電機/迭代器,產生的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, indx) for indx, v in enumerate(I))
,如果你真的想避免itertools
。你爲什麼?
你可以用一個簡單的generator expression做到這一點
>>> [(v, i) for i, v in enumerate(["A", "B", "C"])]
[('A', 0), ('B', 1), ('C', 2)]
我不確定我是否理解你的問題。但這是我的解決方案。 基於對碼: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
因爲它似乎有點小題大做,我很好奇 – tacaswell
@tcaswell導入的東西,使用已經存在是從來沒有真正矯枉過正代碼。這就是說,在這種情況下,它可能不是最可讀的方式。 –
@tcaswell我不確定這個特殊情況,但總的來說'itertools'比生成器表達式快。你應該試試看,並進行比較。 –