GHUM wrote: > Steven, > >> def index(sequence): >> decorated = zip(sequence, xrange(len(sequence))) >> decorated.sort() >> return [idx for (value, idx) in decorated] > > would'nt that be equivalent code? > > def index(sequence): > return [c for _,c in sorted((b,a) for a, b in > enumerate(sequence))]
Or even these: def index(sequence): return sorted(range(len(sequence)), key=sequence.__getitem__) def rank(sequence): return sorted(range(len(sequence)), key=index(sequence).__getitem__) Hint: if you find yourself using a decorate-sort-undecorate pattern, sorted(key=func) or sequence.sort(key=func) might be a better idea. -- Michael Hoffman -- http://mail.python.org/mailman/listinfo/python-list