list conversion question

Raymond Hettinger python at rcn.com
Sun Sep 5 02:24:19 CEST 2004


[Peter Otten] 
> >    Even faster, though perhaps not as clear:
> > 
> >      >>> import operator
> >      >>> hist = [ 0, 1, 0, 5, 43 ]
> >      >>> map(operator.itemgetter(0), sorted(enumerate(hist),
> >      ...                             key=operator.itemgetter(1)))
> >      [0, 2, 1, 3, 4]
>  
> Yet another option, not benchmarked, perhaps clearer:
> 
> >>> hist = [0, 1, 0, 5, 43]
> >>> indices = range(len(hist))
> >>> indices.sort(key=hist.__getitem__)
> >>> indices
> [0, 2, 1, 3, 4]

These are both fast and clean.  Consider posting them to the ASPN
cookbook so they won't get lost.


Raymond Hettinger



More information about the Python-list mailing list