On Mon, Jan 19, 2009 at 7:10 AM, Gerald Britton <gerald.brit...@gmail.com> wrote: > PEP: 3142 > Title: Add a "while" clause to generator expressions [snip] > numbers in that range. Allowing for a "while" clause would allow > the redundant tests to be short-circuited: > > g = (n for n in range(100) while n*n < 50) > > would also yield 0, 1, 2, 3, 4, 5, 6 and 7, but would stop at 8 > since the condition (n*n < 50) is no longer true. This would be > equivalent to the generator function: > > def __gen(exp): > for n in exp: > if n*n < 50: > yield n > else: > break > g = __gen(iter(range(100)))
-1. As I pointed out on python-ideas, this proposal makes "while" mean something different in a generator expression. Currently, you can read any generator expression as a regular generator by simply indenting each clause and adding a yield statement. For example: (n for n in range(100) if n*n < 50) turns into: for n in range(100): if n*n < 50: yield n Applying that nice correspondence to the proposed "while" generator expression doesn't work though. For example: (n for n in range(100) while n*n < 50) is, under the proposal, *not* equivalent to: for n in range(100): while n*n < 50: yield n I'm strongly against making "while" mean something different in a generator expression than it does in a "while" statement. Steve -- I'm not *in*-sane. Indeed, I am so far *out* of sane that you appear a tiny blip on the distant coast of sanity. --- Bucky Katt, Get Fuzzy _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com