Это даже легче сказать, чем любой из предыдущих предложений:
$ python
Python 2.5.5 (r255:77872, Mar 15 2010, 00:43:13)
[GCC 4.3.4 20090804 (release) 1] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> abc = (letter for letter in 'abc')
>>> abc
<generator object at 0x7ff29d8c>
>>> numbered = enumerate(abc)
>>> numbered
<enumerate object at 0x7ff29e2c>
Если enumerate не выполняет отложенную оценку, он вернет [(0,'a'), (1,'b'), (2,'c')]
или некоторый (почти) эквивалент.
Конечно, перечисление на самом деле просто необычный генератор:
def myenumerate(iterable):
count = 0
for _ in iterable:
yield (count, _)
count += 1
for i, val in myenumerate((letter for letter in 'abc')):
print i, val