[Python-Dev] listcomps vs. for loops

Walter Dörwald walter at livinglogic.de
Wed Oct 22 14:05:12 EDT 2003


Guido van Rossum wrote:

 > [...]
> >How about an until keyword in generator expressions:
>
>
> New keywords are not on the table for generator expressions.  You
> could do this with 'while' (which is just 'until not' -- note that
> your example uses that :-) 

You're right, using while would be better.

> but I'd be against making this part of the
> syntax more complex.  You can do that with itertools.takewhile or
> dropwhile anyway.

But

sum(len(line) for line in file if not line.startswith("#") while 
line.strip())

looks simple than

sum(itertools.takewhile(lambda l: l.strip(), len(line) for line in file 
if not line.startswith("#"))

>>def last(it):
>>	for value in it:
>>		pass
>>	return value
> 
> What if it is empty?

This should raise an exception.
(It does, but not the correct one! ;))

>>first(line for line in file if line.startswith("#"))
>>
>>if not last(file):
>>	# last line not terminated
> 
> 
> The comment is incorrect.

That should have been:
if not last(file).endswith("\n"):

Bye,
    Walter Dörwald





More information about the Python-Dev mailing list