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
408-692-4666 |

On Jan 29, 2013, at 6:36 AM, Wolfgang Maier <> 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.

Python-ideas mailing list