[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