Antoine Pitrou wrote: > Alexey G. Shpagin <python-3000 <at> udmvt.ru> writes: >> Example will look like >> g = (n for n in range(100) if n*n < 50 or else_break()) > > Please don't suggest any hack involving raising StopIteration as part of a > conditional statement in a generator expression. It might work today, but it > might as well break tomorrow as it's only a side-effect of the implementation, > not an official property of the language.
As RDM noted, it actually is documented behaviour due to the equivalence between generator expressions and the corresponding generator functions. Writing a separate generator function is typically going to be cleaner and more readable though. Cheers, Nick. P.S. Here's another cute hack for terminating an iterator early: >>> list(iter((n for n in range(10)).next, 5)) [0, 1, 2, 3, 4] (it's nowhere near as flexible as itertools.takewhile, of course) Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia --------------------------------------------------------------- _______________________________________________ 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