[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