I'd like to know what happens when I pass the result of a generator function to python's enumerate(). Example:
def veryBigHello():
i = 0
while i < 10000000:
i += 1
yield "hello"
numbered = enumerate(veryBigHello())
for i, word in numbered:
print i, word
Is the enumeration iterated lazily, or does it slurp everything into the first? I'm 99.999% sure it's lazy, so can I treat it exactly the same as the generator function, or do I need to watch out for anything?
It's lazy. It's fairly easy to prove that's the case:
>>> def abc():
... letters = ['a','b','c']
... for letter in letters:
... print letter
... yield letter
...
>>> numbered = enumerate(abc())
>>> for i, word in numbered:
... print i, word
...
a
0 a
b
1 b
c
2 c