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