Python怎么实现获取乱序列表排序后的新下标
作者:小确幸
时间:2023-05-10
来源:正软商城
浏览:5
对一个列表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,想实现这个效果,就可以用
本文目录
对一个列表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
作者最新文章
xshell连接服务器怎么连 SSH远程登录步骤
2026-11-03 10:13
立刻MV如何删除不需要的MV项目工程
2026-11-02 23:37
beyond compare怎么自动换行
2026-10-23 10:35
Luminar Neo画笔与蒙版使用指南:精准选区与图层合成技巧
2026-10-22 15:23
Photoshop快捷键表格在哪找
2026-10-22 14:42
热门文章
更多
精品专题
更多
Mac软件
更多
火山引擎 网页版
Windows/ macOS/ Linux
火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。
















