Horace Enea wrote: > My example wasn't very good. Here's another try: > > def foo(): > yield 1 > yield 2 > yield 3 > > f = foo() > f.next() > 1 > > g=copy(f) # copy the generator after an iteration > > f.next() > 2 > f.next() > 3 > > g.next() > 2 > > I want to copy the generator's state after one or more iterations.
You could use itertools.tee(): >>> def foo(): ... yield 1 ... yield 2 ... yield 3 ... >>> import itertools >>> f = foo() >>> f.next() 1 >>> f, g = itertools.tee(f) >>> f.next() 2 >>> f.next() 3 >>> g.next() 2 >>> g.next() 3 But note that if your iterators get really out of sync, you could have a lot of elements stored in memory. STeVe -- http://mail.python.org/mailman/listinfo/python-list