Python实现获取乱序列表排序后的新下标的示例
作者:Jumbo星 发布时间:2021-04-25 10:36:42
标签: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
来源:https://blog.csdn.net/jiangqixing0728/article/details/129827172


猜你喜欢
- 本文实例讲述了Python基于更相减损术实现求解最大公约数的方法。分享给大家供大家参考,具体如下:先从网上摘录一段算法的描述如下:更相减损法
- 本次爬虫思路最最重要的是分析信息接口!!!1. 获取url2. 通过请求拿到响应3. 处理反爬4. 提取信息5. 保存内容本次操练网页htt
- 本文实例讲述了Python自定义装饰器原理与用法。分享给大家供大家参考,具体如下:什么是装饰器?装饰器本质是一个函数,它可以在不改变原来的函
- 此系列意在记录于一些有趣的程序及对其的总结。问题来源:https://github.com/Yixiaohan/show-me-the-co
- 折纸是日本著名的折叠纸张的艺术。折纸艺术只是使用一些不同的折叠方式,却能被用各种各样的方式组合成错综复杂的设计。而受折纸启发的logo设计则
- 先给大家展示下效果图: 核心代码如下所示:(‘.selectaddress').click(function () {//图一联系
- 本文实例为大家分享了python3判断url链接是否为404的具体代码,供大家参考,具体内容如下import pymysqlimport t
- 对于大前端来说,JS可谓是我们的神器,从页面的效果到数据的传递,再到后台的业务,无处不充斥着JS的身影,但是万能的JS也有贪玩的时候,某一时
- Python对不可变序列进行重复拼接操作效率会很低,因为每次都会生成一个新的对象,解释器需要把原来对象中的元素先复制到新的对象里,然后再追加
- 2007年1月,国务院 * 了中央“一号文件”,文件中对加快农业信息化建设有了更明确的部署,为新农村建
- 使用场景当需要进行vuex进行数据状态管理的时候,会使用到mapGetters,mapState,还有自身的计算属性的时候,这个时候就会用到
- 前段时间接触了一个批量抠图的模型库,而后在一些视频中找到灵感,觉得应该可以通过抠图的方式,给视频换一个不同的场景,于是就有了今天的文章。我们
- 一、怎么样取得最新版本的MySQL?要安装MySQL,首先要当然要取得它的最新版本,虽然大家都知道在FreeBSD的Packages中可以找
- 概述🌱记住日期是有点困难,但我们是程序员,使困难的事情更容易是我们唯一的工作,所以我们不记得日期为什么不自动化这个任务。在这篇文章中,我们将
- 这篇文章主要介绍了python文字和unicode/ascll相互转换函数及简单加密解密实现代码,下面我们来了解一下。import reim
- ipython notebook经常被我用作debug的工具。今天调试一段代码,里面用到了argparse这个包来解析命令行参数。但是在ip
- swoole —— 重新定义PHPswoole 的进程之间有两种通信方式,一种是消息队列(queue),另一种是管道(pipe),对swoo
- pytorch中尝试用多进程加载训练数据集,源码如下:trainloader = torch.utils.data.DataLoader(t
- Pytorch中,变量参数,用numel得到参数数目,累加def get_parameter_number(net): tota
- 列表添加元素append(),extend(),insert(),+list区别回忆初学python的时候,对列表list添加元素时,对类表