Peter Otten <[EMAIL PROTECTED]> writes:
> > all_heights = lambda:
> > (block.height for block in stack if
> > block.is_marked())
>
> You still need the stop() trick to omit the heights after the marked block.
Yeah, that code was based on my earlier mis-read of the original post.
How's this:
def blocks_until_mark():
return itertools.takewhile(lambda block:\
not block.is_marked(), \
stack)
height = sum(b.height for b in blocks_until_mark())
if is_empty(blocks_until_mark()):
raise SomeError("No marked block")
> Alternatively you can turn all_heights into a list (comprehension) which
> makes the test trivial.
Yes, I felt it wasn't in the spirit of the thing to use that memory.
> I think it will be interesting to see how Python 3000's emphasis on
> iterators will affect overall code complexity.
We will need more iterator primitives, which are still evolving.
--
http://mail.python.org/mailman/listinfo/python-list