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/ -- http://mail.python.org/mailman/listinfo/python-list