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