seemingly simple list indexing problem

John Krukoff jkrukoff at ltgc.com
Mon Jul 28 23:52:25 CEST 2008


On Mon, 2008-07-28 at 18:40 -0300, Guilherme Polo wrote:
> On Mon, Jul 28, 2008 at 6:24 PM, Ervan Ensis <ervan.ensis at gmail.com> wrote:
> > My programming skills are pretty rusty and I'm just learning Python so this
> > problem is giving me trouble.
> >
> > I have a list like [108, 58, 68].  I want to return the sorted indices of
> > these items in the same order as the original list.  So I should return [2,
> > 0, 1]
> 
> You could simply do this:
> 
> a = [108, 58, 68]
> b = sorted(a)
> [b.index(c) for c in a]
> 
> >
> > For a list that's already in order, I'll just return the indices, i.e. [56,
> > 66, 76] should return [0, 1, 2]
> >
> > Any help would be appreciated.
> >
> > --
> > http://mail.python.org/mailman/listinfo/python-list
> >
> 
> 
> 

Which'll work fine, unless you end up with a repeated value such as:

a = [ 108, 58, 68, 108 ]

If you have to deal with that, would need a more complicated solution to
find the first free index slot of the available choices.

-- 
John Krukoff <jkrukoff at ltgc.com>
Land Title Guarantee Company




More information about the Python-list mailing list