Sure:  Say I implement the sieve of Eratosthenes as a prime number
generator.  I want some primes for my application but there are an
infinite number of primes.  So I would like to write:

    prime = (p for p in sieve() while p < 1000)

instead of:

    import itertools
    prime = takewhile(lamda p:p<1000, sieve())

to get the primes under 1000.


On Mon, Jan 19, 2009 at 11:15 AM, Daniel Stutzbach
<dan...@stutzbachenterprises.com> wrote:
> On Mon, Jan 19, 2009 at 9:10 AM, Gerald Britton <gerald.brit...@gmail.com>
> wrote:
>>
>>      g = (n for n in range(100) if n*n < 50)
>>
>>  would yield 0, 1, 2, 3, 4, 5, 6 and 7, but would also consider
>>  the numbers from 8 to 99 and reject them all since n*n >= 50 for
>>  numbers in that range.  Allowing for a "while" clause would allow
>>  the redundant tests to be short-circuited:
>
> Instead of using a "while" clause, the above example could simply be
> rewritten:
>
>     g = (n for n in range(8))
>
> I appreciate that this is a toy example to illustrate the syntax.  Do you
> have some slightly more complex examples, that could not be rewritten by
> altering the "in" clause?
>
> --
> Daniel Stutzbach, Ph.D.
> President, Stutzbach Enterprises, LLC
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to