Home     |     .Net Programming    |     cSharp Home    |     Sql Server Home    |     Javascript / Client Side Development     |     Ajax Programming

Ruby on Rails Development     |     Perl Programming     |     C Programming Language     |     C++ Programming     |     IT Jobs

Python Programming Language     |     Laptop Suggestions?    |     TCL Scripting     |     Fortran Programming     |     Scheme Programming Language


 
 
Cervo Technologies
The Right Source to Outsource

MS Dynamics CRM 3.0

Python Programming Language

copying generatrors


Does anyone have code to copy a generator?

Here is what I'd like to do:

def foo():
   yield 1
   yield 2
   yield 3

f = foo()
g = copy(foo)

print f.next()
1
print f.next()
2

print g.next()
1

Thanks,

   Horace

Why not just do this:

>>> def foo():

...  yield 1
...  yield 2
...  yield 3
...
>>> f = foo()
>>> g = foo()
>>> f.next()
1
>>> f.next()
2
>>> f.next()
3
>>> g.next()
1
>>> g.next()
2
>>> g.next()

3
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.

In article <1181087423.361999.324@o11g2000prd.googlegroups.com>,

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

Steve,

Hey, thanks. I'll try that.

Horace

In article <-JKdnb0ntvytmvvbnZ2dnUVZ_o_in@comcast.com>,
 Steven Bethard <steven.beth@gmail.com> wrote:

Add to del.icio.us | Digg this | Stumble it | Powered by Megasolutions Inc