"Eighty" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > > Eighty wrote: >> I suggest a new extension of the list comprehension syntax: >> >> [x for x in xs while cond(x)]
This does not work. e(x) for x in xs if cond(x) is an abbreviation of for x in xs: if cond(x) yield e(x) and similarly with more for and if clauses, whereas the analogous expansion of your proposal for x in xs: while cond(x): yield e(x) is an infinite loop and not at all what you mean. >> which would be equivalent to >> >> list(itertools.takewhile(cond, xs)) And what would x for x in xs while cond(x) if blah(x) x for x in xs if blah(x) while cond(x) x*y for x in xs while cond(x) for y in ys mean? The ability to mix and match clauses after the first for clause is an important part of comprehension syntax. >> + "Takewhile operations" occur often, at least for me So keep using the function provided. I am pretty sure takewhile is rare for most other people. > So does no one have a comment on this? Ain't gonna happen. > The one objection I can come up with > is that this would change the set builder notation semantics too much Yes, to the point where you are hijacking the syntax, for no useful gain, more than extending it ;-). Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list