温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python怎么实现获取乱序列表排序后的新下标

发布时间:2023-05-09 16:38:01 来源:亿速云 阅读:115 作者:iii 栏目:开发技术

这篇文章主要介绍了Python怎么实现获取乱序列表排序后的新下标的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python怎么实现获取乱序列表排序后的新下标文章都会有所收获,下面我们一起来看看吧。

对一个列表list而言,进行排序是很简单的。正序排序(从小到大)用

list.sort()

 倒序排序(从大到小)用

list.sort(reverse=True)

但是如果不仅限于得到一个排完序的列表,还希望记录原本的下标,那么对于一个numpy.array而言,可以用

np.argsort()

 比如[1,3,2,5,6]

排序后变成[1,2,3,5,6]

但是我们想知道排序后的结果对应原本的下标是什么(答案是[0,2,1,3,4]),就可以用np.argsort()

但是如果就是个简单的list,想实现这个效果,就可以用

# enumerate(x)会自动构造一个tuple(a,b)
# 其中a是index,b是list里index下标对应的具体的值,后面的x是代表一个虚拟变量,即tuple(a,b)
sorted_list = sorted(enumerate(list), key=lambda x:x[1])  # x[1]是因为在enumerate(a)中,a数值在第1位
result = [x[0] for x in sorted_list]

这样返回的result就是原本的index

如果要实现标题里的,更进一步,即要得到一个list排序后的新下标,比如对于 [1,5,2,8,3,4],应该得到[0,4,1,5,2,3]

那就可以用

# enumerate(x)会自动构造一个tuple(a,b)
# 其中a是index,b是list里index下标对应的具体的值,后面的x是代表一个虚拟变量,即tuple(a,b)
# sorted_list = [(0,1),(2,2),(4,3),(5,4),(1,5),(3,8)]
sorted_list = sorted(enumerate(list), key=lambda x:x[1])  # x[1]是因为在enumerate(a)中,a数值在第1位
for i in range(len(sorted_list)):
    list[sorted_list[i][1]] = i

关于“Python怎么实现获取乱序列表排序后的新下标”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python怎么实现获取乱序列表排序后的新下标”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI