首页
学习
活动
专区
工具
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数据分析(中英对照)·Lists 列表

    列表是任何类型的对象的可变序列。 Lists are mutable sequences of objects of any type. 它们通常用于存储同质项目。 And they’re typically used to store homogeneous items. 列表是序列的一种类型,就像字符串一样,但它们确实有区别。 Lists are one type of sequence, just like strings but they do have their differences. 如果我们比较字符串和列表,一个区别是字符串是单个字符的序列, If we compare a string and a list, one difference is that strings are sequences of individual characters, 而列表是任何类型Python对象的序列。 whereas lists are sequences of any type of Python objects. 字符串和列表之间的另一个区别是字符串是不可变的,而列表是可变的。 Another difference between strings and lists is that strings are immutable, whereas lists are mutable. 除了这两个区别之外,字符串和列表当然也有自己的方法。 In addition to these two differences, strings and lists, of course,come with their own methods. 通常情况下,列表只包含一种类型的对象,尽管这不是严格的要求。 It is common practice for a list to hold objects of just one type,although this is not strictly a requirement. 让我们尝试几个简单的列表来测试它们。 Let’s try a couple of simple lists to experiment with them. 让我们构造一个简单的数字列表,以进一步了解列表。 Let’s construct a simple list of numbers to learn a little bit more about lists. 所以我要构造一个数字列表。 So I’m going to construct a list of numbers. 我要称之为数字。 I’m going to call it numbers. 我将使用数字2、4、6和8。 And I’ll use numbers 2, 4, 6, and 8. 假设我想提取或访问列表中的第一个元素。 Imagine I wanted to extract, or access, the first element of my list. 我要做的第一件事是键入列表的名称,然后我需要方括号。 The first thing for me to do is type the name of the list,then I need my square brackets. 现在请记住,在Python中,索引从零开始。 Now remember, in Python, indexes start at zero. 因此,为了能够查看该列表的第一个元素,我需要将其放入索引0,位置0。 So for me to be able to look at the first element of that list,I need to put in index 0, position 0. 在这里,Python告诉我第一个对象,即位于位置0的对象,是数字2。 Here, Python tells me that the first object, meaning the object located at position 0, is number 2. 如果我将索引更改为1,Python将给我第二个对象。 If I change the index to 1, Python gives me the second object. 现在,如果我想知道列表上最后一个对象是什么,我可以从右到左计算位置。 Now if I wanted to find out what is the very last object on my list,I can count positions from right to left. 这意味着我必须使用负指数。 And

    02
    领券