what is it, that I don't understand about python and lazy evaluation?
python at mrabarnett.plus.com
Thu Aug 13 13:23:50 CEST 2009
Erik Bernoth wrote:
> Hi List,
> look at the following code:
> def evens():
> # iterator returning even numbers
> i = 0
> while True:
> yield i
> i += 2
> # now get all the even numbers up to 15
> L = [n for n in evens() if n < 15]
> Isn't it strange, that this code runs (in a lazy language) for eternity?
> I would expect python to to spit out (in no time):
> >> L
> [0, 2, 4, 6, 8, 10, 12, 14]
> after 14 it is not nessesary to evaluate evens() any further.
It's equivalent to:
L = 
for n in evens():
if n < 15
More information about the Python-list