enumerate improvement proposal
bignose+hates-spam at benfinney.id.au
Mon Oct 30 00:08:09 CET 2006
James Stroud <jstroud at mbi.ucla.edu> writes:
> Fredrik Lundh wrote:
> > why is it this function's job to add an offset to the actual
> > sequence index?
> The code is for an economist. She is insistent on starting with the
> first bin as 1.
Note that 'enumerate' is actually a built-in type, and 'enumerate()'
is the constructor returning a new object of that type.
A special case isn't special enough to change the built-in type.
>>> print enumerate("ABCDE")
<enumerate object at 0xa7d642ac>
>>> print list(enumerate("ABCDE"))
[(0, 'A'), (1, 'B'), (2, 'C'), (3, 'D'), (4, 'E')]
>> def obstinate_economist_enumerate(items):
... seq = [(i+1, x) for (i, x) in enumerate(items)]
... return iter(seq)
>>> print obstinate_economist_enumerate("ABCDE")
<listiterator object at 0xa7d6408c>
>>> print list(obstinate_economist_enumerate("ABCDE"))
[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'D'), (5, 'E')]
This doesn't produce an 'enumerate' object; if you really want that,
you could subclass 'enumerate', but it seems the above function does
what you want.
\ "I installed a skylight in my apartment. The people who live |
`\ above me are furious!" -- Steven Wright |
More information about the Python-list