for: else: - any practical uses for the else clause?
Paul Rubin
http
Fri Sep 29 18:59:40 EDT 2006
Matthew Woodcraft <mattheww at chiark.greenend.org.uk> writes:
> How do you transform this?
>
> 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")
Untested:
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")
More information about the Python-list
mailing list