["python","numpy"]
Equivalent of Numpy.argsort() in basic python?

is there a builtin function of Python that does on python.array what argsort() does on a numpy.array?
I timed the suggestions above and here are my results. import timeit import random import numpy as np def f(seq): # http://stackoverflow.com/questions/3382352/equivalent-of-numpy-argsort-in-basic-python/3383106#3383106 #non-lambda version by Tony Veijalainen return [i for (v, i) in sorted((v, i) for (i, v) in enumerate(seq))] def g(seq): # http://stackoverflow.com/questions/3382352/equivalent-of-numpy-argsort-in-basic-python/3383106#3383106 #lambda version by Tony Veijalainen return [x for x,y in sorted(enumerate(seq), key = lambda x: x[1])] def h(seq): #http://stackoverflow.com/questions/3382352/equivalent-of-numpy-argsort-in-basic-python/3382369#3382369 #by unutbu return sorted(range(len(seq)), key=seq.__getitem__) seq = list(range(10000)) random.shuffle(seq) n_trials = 100 for cmd in [ 'f(seq)', 'g(seq)', 'h(seq)', 'np.argsort(seq)', 'np.argsort(seq).tolist()' ]: t = timeit.Timer(cmd, globals={**globals(), **locals()}) print('time for {:d}x {:}: {:.6f}'.format(n_trials, cmd, t.timeit(n_trials))) output time for 100x f(seq): 0.323915 time for 100x g(seq): 0.235183 time for 100x h(seq): 0.132787 time for 100x np.argsort(seq): 0.091086 time for 100x np.argsort(seq).tolist(): 0.104226 A problem size dependent analysis is given here.