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