This seems *so* close to what itertools.takewhile() does that it's really hard for me to see why we need special syntax for it.


On Thu, Feb 20, 2014 at 6:13 PM, Carl Smith <carl.input@gmail.com> wrote:
Sometimes you need to build a list in a loop, but break from the loop if some condition is met, keeping the list up to that point. This is so common it doesn't really need an example.

Trying to shoehorn the break keyword in to the generator expression syntax doesn't look pretty, unless you add `and break if expr` to the end, but that has its own issues. Besides, overloading `while` is much cuter...

    ls = [ expr for name in iterable while expr ]

    ls = [ expr for name in iterable if expr while expr ]

    ls = [ expr for name in iterable if expr else expr while expr ]

With regular generator expressions, it gives you a kind of base case, which may assist with showing off.

_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/



--
Keeping medicines from the bloodstreams of the sick; food
from the bellies of the hungry; books from the hands of the
uneducated; technology from the underdeveloped; and putting
advocates of freedom in prisons.  Intellectual property is
to the 21st century what the slave trade was to the 16th.