OK, so your suggestion: g = (n for n in range(100) if n*n < 50 or raiseStopIteration())
really means "return in in the range 0-99 if n-squared is less than 50 or the function raiseStopIteration() returns True". How would this get the generator to stop once n*n >=50? It looks instead like the first time around, StopIteration will be raised and (presumably) the generator will terminate. On Tue, Jan 20, 2009 at 10:38 AM, Alexey G. Shpagin <python-3...@udmvt.ru> wrote: > On Tue, Jan 20, 2009 at 09:24:32AM -0500, Gerald Britton wrote: >> hmmm...doesn't: >> >> if n*n < 50 or raise StopIteration() >> >> really mean, "Return an integer in the range 0-99 if n-squared is less >> than fifty or the statement 'raise StopIteration()' returns True" ? >> >> I'm not sure that that will work. > Well, your variant will trigger syntax error (and will not work surely). > > To make it work we need a function, that raises StopIteration. > exactly as I have suggested. > >> >> On Tue, Jan 20, 2009 at 9:18 AM, <python-3...@udmvt.ru> wrote: >> > On Mon, Jan 19, 2009 at 10:10:00AM -0500, Gerald Britton wrote: >> >> Please find below PEP 3142: Add a "while" clause to generator >> >> expressions. I'm looking for feedback and discussion. >> >> >> > ... >> >> g = (n for n in range(100) while n*n < 50) >> > >> > May I suggest you this variant? >> > > >> > def raiseStopIteration(): >> > raise StopIteration >> > >> > g = (n for n in range(100) if n*n < 50 or raiseStopIteration()) > > -- > Alexey G. Shpagin > _______________________________________________ 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