[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

AltStyle によって変換されたページ (->オリジナル) /