Lists and Indices

Duncan Booth duncan at NOSPAMrcp.co.uk
Fri Aug 9 04:16:20 EDT 2002


Jim Meier <jim at dsdd.org wrote in 
news:xPG49.120038$f05.6430979 at news1.calgary.shaw.ca:

>>>> class IndexingIterator:
> ...      def __init__(self, iterator):
> ...           self.index = 0
> ...           self.iter = iter(iterator)
> ...      def __iter__(self):
> ...           return self
> ...      def next(self):
> ...           self.index += 1
> ...           return (self.index, self.iter.next())
> ... 
>>>> for i,c in IndexingIterator(['a','b','c']):
> ...      print "%d. %s" % (i,c)
> ... 
> 1. a
> 2. b
> 3. c
>>>>^D
> 
> "IndexingIterator" is a mouthful, you'd probably want to choose a better
> name.
> 
Cleaner would just be to use enumerate from the PEP:

    from __future__ import generators
    def enumerate(collection):
        'Generates an indexed series:  (0,coll[0]), (1,coll[1]) ...'     
        i = 0
        it = iter(collection)
        while 1:
            yield (i, it.next())
            i += 1

When Python 2.3 comes along you can just delete all of the above for the 
same effect.

-- 
Duncan Booth                                             duncan at rcp.co.uk
int month(char *p){return(124864/((p[0]+p[1]-p[2]&0x1f)+1)%12)["\5\x8\3"
"\6\7\xb\1\x9\xa\2\0\4"];} // Who said my code was obscure?



More information about the Python-list mailing list