The itertools.combinations
function should work to get you the various pairs of elements, then you just need to find the distance and sort them:
distances = [[euclidean(points[a], points[b]), a, b]
for a, b in itertools.combinations(range(len(points)), 2)]
distances.sort() # distance is already first element, so no key function required
Now, with numpy
values this may not be the most efficient way to go, but it works.