Lists and Indices

Bryan Olson fakeaddress at nowhere.org
Fri Aug 9 04:51:08 EDT 2002


Lindstrom Greg - glinds wrote:
[...]
 > I could do
 >
 > for index in range(len(colors)):
 > 	print '%d.  %s' % ( index, colors[index])
 >
 > but I don't like that..it's not easily readable, IMHO.

The 'range(len(thing))' construct is so common in Python that just about
any Python programmer will be able to read it at a glance.  The loop
above is so small and self-contained that I wouldn't worry about it.
Some people define,

     def indices(sequence):
         return range(len(sequence))

which allows the arguably-more-readable,

     for index in indecies(colors):
         print '%d.  %s' % (index, colors[index])

We could also define the indices function using generators, which would
avoid building the whole list of indices,

     def indices(sequence):
         for i in range(len(sequence)):
             yield i


Unfortunately, there are two valid spellings of the plural of "index",
so we might also want,

     indexes = indices


Hmmm, I guess if you're that concerned about readability you wouldn't
like,

print "\n".join(["%d\t%s" % (i, colors[i]) for i in range(len(colors))])


--Bryan




More information about the Python-list mailing list