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
            L.append(n)
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to