首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在python中对列表排序后获取原始索引

在Python中,可以使用sorted()函数对列表进行排序,并使用enumerate()函数获取排序后的元素的原始索引。

下面是一个示例代码:

代码语言:txt
复制
def sort_with_original_index(lst):
    sorted_lst = sorted(enumerate(lst), key=lambda x: x[1])
    original_index = [x[0] for x in sorted_lst]
    return original_index

# 示例用法
my_list = [5, 2, 9, 1, 7]
result = sort_with_original_index(my_list)
print(result)

输出结果为:[3, 1, 0, 4, 2],表示原始列表中的元素按升序排序后的索引顺序。

解释代码的工作原理:

  1. enumerate(lst)函数将列表lst转换为一个包含索引和元素的元组列表。
  2. sorted()函数根据元组列表中的元素进行排序,使用lambda x: x[1]作为排序的关键字,表示按元组的第二个元素进行排序。
  3. 排序后的元组列表存储在sorted_lst变量中。
  4. 使用列表推导式[x[0] for x in sorted_lst]提取排序后的元组列表中的索引部分,得到原始索引列表original_index
  5. 返回original_index作为结果。

需要注意的是,以上代码只是对列表进行简单的升序排序,并获取排序后的原始索引。如果需要进行其他类型的排序,可以根据具体需求修改sorted()函数的关键字参数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • python列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法

    前言 排序(Sorting) 是计算机程序设计的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。...本文主要讲述python中经常用的三种排序算法,选择排序法,冒泡排序法和插入排序法及其区别。通过列表里的元素大小排序进行阐述。...if arr[x] > arr[y]: # 让arr[x]和arr列表每一个元素比较,找出小的 arr[x], arr[y] = arr...每一相邻元素作同样的工作,从开始第一到结尾的最后一。这步做完,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。...插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列从后向前扫描,找到相应位置并插入。 插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。 1.

    1.7K30

    第四章4:使用列表

    切片和range()函数具有一样的参数,开始、结束、步长: # 用切片获取一个列表的特定对象 print(nums[1:3]) # 输出结果为索引位置1和2上的对象 print(nums[:2])...这意味着,如果你将停止位置上为-5,切片获取的对象将从列表的开头一直切到列表结束之前的五个元素。 增加元素 当你需要向你的现有列表添元素,Python有两个不同的方法来实现这一目标。...) # 使用sorted方法排序存储在一个新变量 print(nums, sorted_nums) # 输出原始列表排序列表 继续并运行这一代码块。...你会注意到,在声明nums列表时,其输出结果仍是保持原始顺序的列表。要获取新的排序列表,我们只需将其保存到一个新变量即可。....sort() sort方法的使用目的与我们上面所讲的sorted函数目的相同;但是,不同的是它会直接更改并覆盖原始列表: # 使用.sort()函数列表进行排序 nums = [5, 0, 8, 3

    5.6K30

    笨办法学 Python · 续 练习 22:后缀数组

    后缀数组只是,将字符串的所有后缀排序,储存到有序列表。后缀树是类似的,但是比列表更像BSTree。这些算法相当简单,一旦你进行了排序操作,它们就具有很快的性能。...'adabra', 'bra', 'bracadabra', 'cadabra', 'dabra', 'ra', 'racadabra'] >>> 正如你所看到的,我只是按顺序取下字符串的后缀,然后列表进行排序...一旦我有了这个列表,那么我可以通过这个列表的二分搜索,来找到我想要的任何后缀。这个例子很简陋,但是在实际的代码,你可以很快地做到它,你可以跟踪所有的原始索引,所以你可以引用后缀的原始位置。...我跳起来走到白板,向那个家伙解释如何制作一个后缀树,它如何提高搜索性能,修改的堆排序如何更快,后缀树的工作原理,为什么它比三叉搜索树更好,以及如何在 C 实现。...研究性学习 一旦你的测试正常工作,使用你的BSTree重写它,进行后缀排序和搜索。你还可以使用每个BSTreeNode的value,来跟踪原始字符串存在该子串的位置。然后,你可以保留原始字符串。

    1K20

    挑战30天学完Python:Day5数据类型-列表list

    如何创建list Python创建列表集有两种方式: 使用list内置函数 # 使用方法,变量名lst并不是错别字,避免使用list=list(),因为list是python关键字 lst = list...:同样我们可以通过负索引列表进行切片获取新的list操作。...这种方式下list2是list1的引用,任何在list2的修改都将改变原是原始list1。但很多情况下,我们不希望改变原list,而是创建一个不关联的副本。...sort() :此排序方法将列表项按升序重新排序,并修改原始列表。如果方法参数reverse等于true,它将按降序排列列表项。...使用 reverse() 降序排序。 切片方式获取it_companies的前三项。 切片方式获取it_companies的三项。 切片方式获取位于列表中间的几项。 从列表移除第一个公司。

    18920

    看图学NumPy:掌握n维数组基础知识点,看这一篇就够了

    从NumPy数组获取数据的另一种超级有用的方法是布尔索引,它允许使用各种逻辑运算符,来检索符合条件的元素: ? 注意:Python的三元比较3<=a<=5在NumPy数组不起作用。...不过排序函数的功能比Python列表对应函数更少: ? 搜索向量的元素 与Python列表相反,NumPy数组没有index方法。 ?...二维索引语法比嵌套列表更方便: ? 和一维数组一样,上图的view表示,切片数组实际上并未进行任何复制。修改数组,更改也将反映在切片中。...矩阵排序 尽管axis参数对上面列出的函数很有用,但对二维排序却没有帮助: ? axis绝不是Python列表key参数的替代。...不过NumPy具有多个函数,允许按列进行排序: 1、按第一列对数组排序:a[a[:,0].argsort()] ? argsort排序,此处返回原始数组的索引数组。

    6K20

    python set 排序_如何在Python中使用sorted()和sort()

    编号进行排序   1.2   字符串进行排序   二   Python排序遇到的限制和陷阱   2.1   无法具有不可比数据类型的列表用sorted函数排序   2.2   当你在对字符串进行排序时....sort()   七   结论:如何在Python中进行排序      说明          所有程序员都必须编写代码来项目或数据进行排序。...在本指南中,您将学习如何在不同的数据结构各种类型的数据进行排序、自定义顺序,以及如何使用Python的两种不同的排序方法进行排序。  ...在本指南中, 您将学习:   1.如何在不同的数据结构各种类型的数据进行排序, 自定义顺序。   2.如何使用 Python 的两种不同的排序方法。  ...一、   使用sorted()函数值进行排序   1.1   编号进行排序   您可以使用Python的sorted()列表进行排序

    4.2K40

    53 道 Python 面试题,帮你成为大数据工程师

    注意如何在函数外部定义的列表在函数内部被修改。函数的参数指向内存存储li值的原始块。...请注意如何在列表上调用reverse()并其进行突变。它不会返回变异列表本身。...浅表副本会创建一个新对象,但会使用原始对象的引用来填充它。因此,将新对象添加到原始集合li3不会传播到li4,但是修改li3的一个对象将传播到li4。...酸洗是在Python序列化和反序列化对象的首选方法。 在下面的示例,我们字典列表进行序列化和反序列化。...您无法字典进行"排序",因为字典没有顺序,但是您可以返回已排序的元组列表,其中包含字典的键和值。

    10.4K40

    python可变对象和不可变对象

    列表的元素可以是任意类型,包括数字、字符串、布尔值等。列表的创建非常简单,只需使用方括号[]即可。 列表具有很多实用的操作方法,添加元素、删除元素、修改元素等。...字典也具有很多实用的操作方法,添加键值、删除键值、修改键值对等。...这是因为字符串在Python是不可变的,任何字符串的操作都会生成一个新的字符串对象。 除了切片操作外,我们还可以使用字符串的一些常用方法来处理字符串,拼接、替换、分割等。...3/glossary.html#term-mutable 相关阅读: Python 如何克隆一个列表,使它不会在赋值发生意外变化?...如何在迭代时从 python 列表删除元素? Python 数据结构之 dictionary Python 数据结构之 tuple 理解Python的浅拷贝和深拷贝

    45820

    Python标准数据类型-List(列表)

    ,但是通常情况下,我们会在一个列表只放入一种类型的数据,增加程序的可读性 创建空列表Python,也可以创建空列表,然后再列表进行一系列操作 实例:创建一个名为hacker的空列表 hacker...列表,我们可以使用索引去访问列表的元素 实例:创建一个名为demo的列表并访问指定索引的元素 demo = ["hello", "python", "world"] print(demo[1])...# 索引从0开始以此类推 修改列表元素 修改列表元素只需要通过索引获取该元素,然后再重新赋值即可 实例:定义一个名为demo的列表修改索引值为1的元素 demo = ["hello", "python...扩展列表:", demo) 检索指定元素在列表首次出现的索引位置index() index()方法用于检索指定元素在列表首次出现的索引位置 index()方法语法格式:listname.index...()和sort()的区别: sorted()不会修改原始可迭代对象,而是返回一个新的排序列表 sort()原始可迭代对象进行排序 删除列表的一个元素pop() pop()方法语法格式:list.pop

    23220

    Python面试突击

    反之从存储的字符串文件中提取原始Python对象的过程,叫做unpickling Python是如何被解释的? 它的源代码可以直接运行。...* Python中文档字符串被称为docstring,它在Python的作用是为函数、模块和类注释生成文档。 如何在Python拷贝一个对象?...* Python的序列索引可以是正也可以是负。如果是正索引,0是序列的第一个索引,1是第二个索引。如果是负索引,(-1)是最后一个索引而(-2)是倒数第二个索引。...一行代码实现列表a的偶数位置的元素进行加3求和? 将列表a的元素顺序打乱,再a进行排序得到列表b,然后把a和b按元素顺序构造一个字典d。...如何在一个function里面设置一个全局的变量?

    1.6K41

    RedisALPHA选项的实现

    具体的实现过程如下:首先,根据BY选项指定的键从hash表获取对应的值,并将键值作为元素存入一个临时的列表,其中列表索引原始元素的索引保持一致。...那么根据BY选项获取的键值会形成一个临时的列表,如图所示:+--------+----------+ | 索引 | 值 |+--------+----------+| 0...在上述例子,如果ALPHA选项被设置为true,则临时列表将按照字母顺序排序;如果ALPHA选项被设置为false,则临时列表将按照数值大小排序。...最后,根据排序的临时列表索引顺序,原始的元素进行重新排序。...根据上述例子的临时列表进行排序,得到的结果如下:+--------+----------+| 索引 | 原始元素 |+--------+----------+| 0 | "item:

    207101

    iOS实践:打造一个可以快速索引的城市列表页1. 从plist获取城市字典2. 城市的首字母进行排序3. 设置边栏索引4. 关于约束的重要提示5. 完善:封装

    相信绝大部分LBS的APP里面,大家都能看到一个带索引的城市列表页面,用来让用户选择所在城市。...我们就一步一步的来实现这个页面,最终效果如下: Paste_Image.png 最终我们会按照首字母汉语拼音所有城市进行排序,可以通过右侧的首字母索引来快速定位到城市。 1....从plist获取城市字典 1.1 准备素材,下载文件 城市列表(带拼音首字母的),下载地址: 链接: https://pan.baidu.com/s/1nV**YJJ 密码: cjpw...城市的首字母进行排序 所有字典key的数组的内容进行排序 对于排序,系统提供了两种办法可以进行排序。我们就不用再写什么冒泡儿、选择之类的算法了,直接来就可以用。...排序结果记录在了NSComparisonReuslt。 NSComparisonReuslt是一个枚举。通过操作两数比较的结果,进行排序

    2.3K20

    Python | 一文看懂Python列表、元组和字符串操作

    列表、元组、字符串都属于序列 1 列表 列表(List)是Python中非常重要的内置数据类型。列表由一系列元素组成,所有的元组被包含在一方括号列表被创建将,可以执行添加、删除、修改操作。...列表可包含任意的Python数据信息,字符串、数字、列表、元组等。 ?...1.2.2 列表切片 切片操作(slice)可以从一个列表获取列表列表的一部分)。我们使用一方括号、起始偏移量start、终止偏移量end 以及可选的步长step 来定义一个分片。 ?...object list.extend(sequence) 把一个序列seq的内容添加到列表 2 元组 2.1 元组操作 Python 的元组与列表类似,不同之处在于tuple被创建就不能对其进行修改...lst 移除列表索引为3的元素 翻转列表里的所有元素 列表里的元素进行排序,从小到大一次,从大到小一次 >>> lst = [2, 5, 6, 7, 8, 9, 2, 9, 9] >>> lst.append

    4.5K51

    53个Python经典面试题详解

    如何使用reverse函数反转一个列表? 下面的代码一个列表调用reverse()函数,其进行修改。该方法没有返回值,但是会对列表的元素进行反向排序。...如何在Python连接列表? 将2个列表相加,就是将它们连接在一起。但请注意,数组的工作方式不是这样的。...Pickling是Python序列化和反序列化对象的常用方法。 在下面的示例,我们一个字典列表进行序列化和反序列化。...如何在Python递增和递减一个整数? 可以使用“+=”和“-=”整数进行递增和递减。...如何按字母顺序字典进行排序? 你不能对字典进行排序,因为字典没有顺序,但是你可以返回一个已排序的元组列表,其中包含字典的键和值。

    7.1K30

    27 个问题,告诉你Python为什么这么设计

    为什么有单独的元组和列表数据类型? 列表是如何在CPython实现的? 字典是如何在CPython实现的? 为什么字典key必须是不可变的? 为什么 list.sort() 没有返回排序列表?...gc 模块提供了执行垃圾回收、获取调试统计信息和优化收集器参数的函数。 但是,其他实现( Jython 或 PyPy ),)可以依赖不同的机制,完全的垃圾回收器 。...该实现使用其他对象的引用的连续数组,并在列表头结构中保留指向该数组和数组长度的指针。 这使得索引列表 a[i] 的操作成本与列表的大小或索引的值无关。 当添加或插入项时,将调整引用数组的大小。...为什么 list.sort() 没有返回排序列表? 在性能很重要的情况下,仅仅为了排序而复制一份列表将是一种浪费。因此, list.sort() 列表进行了适当的排序。...此函数从提供的可迭代列表创建新列表其进行排序并返回。例如,下面是如何迭代遍历字典并按keys排序: for key in sorted(mydict): ...

    6.7K11

    Pandas知识点-排序操作

    为了方便后面进行排序操作,只读取了数据的前十行,并删除了一些列,设置“日期”和“收盘价”为索引。 ? 读取的原始数据如上图,本文基于这些数据来进行排序操作。 二、DataFrame排序操作 1....给level传值时,可以传入行索引的key(索引名),:“日期”、“收盘价”,也可以传入行索引的数值索引:0或1,0对应“日期”,1应“收盘价”。...如果要按多重索引内的多个行索引排序,可以给level传入一个列表,这样会先按列表的第一个行索引排序,当第一个行索引有相等的值时,再按第二个行索引进行排序,以此类推。...继续上面的情况,按多重索引的第一个行索引排序不继续排序,如果第一个行索引中有相等的值,结果的顺序是什么样的呢?是不是保持原始数据的先后顺序?...以上就是Pandas排序操作介绍,如果需要数据和代码,可以点击关注公众号“Python碎片”,然后在后台回复“pandas04”关键字获取本文代码和数据。

    1.8K30
    领券