indexed() generator

Quinn Dunkan quinn at hork.ugcs.caltech.edu
Fri Jan 25 17:21:46 EST 2002


On Fri, 25 Jan 2002 16:21:14 +0100, Alex Martelli <aleax at aleax.it> wrote:
>"Michael Chermside" <mcherm at destiny.com> wrote in message
>news:mailman.1011968940.24241.python-list at python.org...
>    ...
>>   * The following approach is simpler and cleaner _IF_ the reader is
>>     familiar with the convention:
>>
>>      # Approach 3:
>>      for i, item in indexed(list):
>>          <code with i and item>
>    ...
>> So... anyone else agree?
>
>Yes.  See also:
>http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52233
>
>where I offer two implementations of indexed (spelled Indexed)
>for Python 2.1 (with 'list' having to be a sequence, of course,
>since iterators were not around yet):
>
>class Indexed:
>    def __init__(self, seq):
>        self.seq = seq
>    def __getitem__(self, i):
>        return self.seq[i], i
>
>
>or
...

Also note that mxTools has indices(x) which is like tuple(range(len(x)) and
irange(x) which is like tuple(zip(indices(x), x)).  Of course now that we have
generators they could use those, but I like the mxTools functions and think
they'd be just fine except for huge sequences in low memory situations.

There's lots of useful general-purpsoe utilities in mxTools.  Things like
NotGiven are handy for:

def f(x=NotGiven):
    if x is NotGiven: # None is a valid value
        ...

Not that votes count for much, but if people want Indexed functionality in the
core, I vote for the mxTools functions over the 'indexed' keyword.



More information about the Python-list mailing list