Yes, but it only works for generator expressions and not comprehensions.  My opinion of that workaround is that it’s also a step backward in terms of readability.  I suspect 

if i < 50 else stop() would probably also work, since it throws an exception.  That’s better, IMHO.  






On Jun 28, 2013, at 6:38 PM, Andrew Carter <acarter@g.hmc.edu> wrote:

Digging through the archives (with a quick google search) http://mail.python.org/pipermail/python-ideas/2013-January/019051.html, if you really want an expression it seems you can just do

def stop():
  raise StopIteration
list(i for i in range(100) if i < 50 or stop())

it seems to me that this would provide syntax that doesn't require lambdas.






On Fri, Jun 28, 2013 at 4:50 PM, Alexander Belopolsky <alexander.belopolsky@gmail.com> wrote:



On Fri, Jun 28, 2013 at 7:38 PM, Shane Green <shane@umbrellacode.com> wrote:
..
[x until condition for x in l ...] or 
[x for x in l until condition]

Just to throw in one more variation:

[expr for item in iterable break if condition]

(inversion of "if" and "break"reinforces the idea that we are dealing with an expression rather than a statement - compare with "a if cond else b")  

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