On 13 июл, 14:12, Peter Otten <[EMAIL PROTECTED]> wrote:
> Yosifov Pavel wrote:
> > Whats is the way to clone "independent" iterator? I can't use tee(),
> > because I don't know how many "independent" iterators I need. copy and
> > deepcopy doesn't work...
>
> There is no general way. For "short" sequences you can store the items in a
> list which is also the worst-case behaviour of tee().
>
> What are you trying to do?
>
> Peter

I try to generate iterators (iterator of iterators). Peter, you are
right! Thank you. For example, it's possible to use something like
this:

def cloneiter( it ):
    """return (clonable,clone)"""
    return tee(it)

and usage:

clonable,seq1 = cloneiter(seq)

...iter over seq1...
then clone again:

clonable,seq2 = cloneiter(clonable)

...iter over seq2...

Or in class:

class ReIter:
    def __init__( self, it ):
        self._it = it
    def __iter__( self ):
        self._it,ret = tee(self._it)
        return ret

and usage:

ri = ReIter(seq)
...iter over ri...
...again iter over ri...
...and again...

But I think (I'm sure!) it's deficiency of Python iterators! They are
not very good...

--Pavel
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to