Python列表排序并得到原来对应的下标

例如a = [5,6,3,8]

排序结果应为[3,5,6,8],对应下标为[2,0,1,3]

思想:建立和下表对应的元祖,排序时按对应值排序即可

方法一、

x = [5,6,3,8]
b = sorted(zip(x, range(len(x))))
b.sort(key = lambda x : x[0])  # x[0]是因为在元组中,按a排序,a在第0位,这里的x不是前面的数组x,只是临时申请的变量
c = [x[1] for x in b]  # x[1]是因为在元组中,下标在第1位

方法二、(写着简单点)

x = [5,6,3,8]
b = sorted(enumerate(x), key=lambda x:x[1])  # x[1]是因为在enumerate(a)中,a数值在第1位
c = [x[0] for x in b]  # 获取排序好后b坐标,下标在第0位
posted @ 2022-04-18 10:09  小Aer  阅读(144)  评论(0)    收藏  举报  来源