[Python-ideas] while conditional in list comprehension ?? (original) (raw)

Shane Green shane at umbrellacode.com
Mon Jan 28 15:51:23 CET 2013


Yeah, I realized (1) after a minute and came up with "else break": if n < 400 else break. Could that be functionally equivalent, not based on a loop construct within an iterator?

Shane Green www.umbrellacode.com 408-692-4666 | shane at umbrellacode.com

On Jan 28, 2013, at 6:43 AM, Chris Angelico <rosuav at gmail.com> wrote:

On Tue, Jan 29, 2013 at 1:32 AM, Shane Green <shane at umbrellacode.com> wrote:

Isn't "while" kind just the "if" of a looping construct?

Would [n for n in range(1,1000) while n < 400] == [n for n in range(1,1000) if n < 400]? I guess your kind of looking for an "else break" feature to exit the list comprehension before evaluating all the input values. Wouldn't that complete the "while()" functionality? In the specific case given, they'll produce the same result, but there are two key differences: 1) If the condition becomes true again later in the original iterable, the 'if' will pick up those entries, but the 'while' won't; and 2) The 'while' version will not consume more than the one result that failed to pass the condition. I daresay it would be faster and maybe cleaner to implement this with a language feature rather than itertools.takewhile, but list comprehensions can get unwieldy too; is there sufficient call for this to justify the syntax? ChrisA


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

-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-ideas/attachments/20130128/1272c96c/attachment.html>



More information about the Python-ideas mailing list