1

このジェネレーター関数を比較的単純なジェネレーター理解に変換する方法はありますか?(以下は私にとってはうまくいきます、私は可能なオプションが何であるかを理解したいだけです)

def annotate(x):
   n = 0
   for item in x:
     yield(item,n)
     n = n + 1

使用例:

>>> for line in annotate([3,4,5]):
...   print line
...
(3, 0)
(4, 1)
(5, 2)
4

1 に答える 1

5

使用できますenumerate

comp = ((y,x) for x,y in enumerate(iterable))

デモンストレーション:

>>> annotated = ((y,x) for x,y in enumerate(range(1,4)))
>>> for line in annotated: print line
... 
(1, 0)
(2, 1)
(3, 2)

ただし、通常enumerateは逆の順序で使用して解凍するだけです。:^)

于 2012-11-29T18:52:53.763 に答える