[Tutor] iteritems() vs items()
Tim Johnson
tim at johnsons-web.com
Mon Nov 14 02:08:16 CET 2005
Well put. Got it.
Thanks Kent
tj
* Kent Johnson <kent37 at tds.net> [051113 14:44]:
> Tim Johnson wrote:
> > * Liam Clarke-Hutchinson <Liam.Clarke-Hutchinson at business.govt.nz> [051113 12:41]:
> >
> >>Someone correct me if I'm wrong, but I believe there is no specific iterator
> >>object, but rather objects that have a method for __iter___...
> >
> >
> > Some light is slowly dawning here (I think) .... from
> > http://docs.python.org/ref/yield.html
> >
> > It appears that a generator, is an object, but
> > not derived from a class, but from a generator function,
> > using yield.
>
> I would say it is an object of a built-in class created by calling a generator function, which is a function that uses yield.
>
> You can create your own iterators by defining a class that defines the special methods __iter__() and next(). __iter__ just returs self, and next() returns the next item in the iteration or raises StopIteration. See
> http://docs.python.org/lib/typeiter.html
>
> Generators provide a convenient short-cut for creating many kinds of iterators because generator state is maintained implicitly. For example, a class for iterators that count from 1 to 10 might look like this:
>
> class counter:
> def __init__(self):
> self.count = 0
> def __iter__(self):
> return self
> def next(self):
> if self.count < 10:
> self.count += 1
> return self.count
> raise StopIteration
>
> The equivalent generator function could be
>
> def counter():
> for count in range(1, 11):
> yield count
>
> or, maybe a fairer comparison would be
>
> def counter():
> count = 0
> if count < 10:
> count += 1
> yield count
>
> which is still much shorter and easier to understand than the class version. Usage of all three is identical:
>
> for i in counter():
> print i
>
> Kent
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
--
Tim Johnson <tim at johnsons-web.com>
http://www.alaska-internet-solutions.com
More information about the Tutor
mailing list