for: else: - any practical uses for the else clause?

Sybren Stuvel sybrenUSE at YOURthirdtower.com.imagination
Sat Sep 30 03:49:01 EDT 2006


Paul Rubin enlightened us with:
>> height = 0
>> for block in stack:
>>     if block.is_marked():
>>         print "Lowest marked block is at height", height
>>         break
>>     height += block.height
>> else:
>>     raise SomeError("No marked block")
>
>     all_heights = [block.height for block in stack if block.is_marked()]
>     if all_heights:
>       height = sum(all_heights)
>     else:
>       raise SomeError("No marked block")
>
> Alternatively (lower memory usage for large list):
>
>     all_heights = (block.height for block in stack if block.is_marked())
>     try:
>       height = all_heights.next()
>       height += sum(all_heights)
>     except StopIteration:
>       raise SomeError("No marked block")

I must say that the for/else construct is a LOT more readable than the
rewritten alternatives.

Sybren
-- 
Sybren Stüvel
Stüvel IT - http://www.stuvel.eu/



More information about the Python-list mailing list