Here's what I was doing, and worked when i switched to the generator: 

>>> def stop(): 
…     raise StopIteration()

>>> list(((x if x < 5 else stop()) for x in range(10)))
[0, 1, 2, 3, 4]





Shane Green 
www.umbrellacode.com
408-692-4666 | shane@umbrellacode.com

On Jan 29, 2013, at 6:36 AM, Wolfgang Maier <wolfgang.maier@biologie.uni-freiburg.de> wrote:

Are you trying to say you entered that code and it ran?
I would be very surprised: if you could simply 'raise StopIteration' within the
'if' clause then there would be no point to the discussion.
But as it is, your StopIteration should not be caught by the 'for', but will be
raised directly. Did you try running it?

Sorry, I missed your enclosing list(), which explains things of course.
Cheers,
Wolfgang



_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
http://mail.python.org/mailman/listinfo/python-ideas