在 Python 中获取排序列表的索引

在 Python 中获取排序列表的索引

Get the indices of a sorted list in Python

要获取排序列表的索引:

  1. 使用range()该类创建range列表长度的对象。
  2. 使用该sorted()函数获取排序列表的索引。
  3. 设置key参数以指定排序标准。
主程序
a_list = ['a', 'b', 'd', 'c'] indices = sorted( range(len(a_list)), key=lambda index: a_list[index] ) print(indices) # 👉️ [0, 1, 3, 2] sorted_list = [a_list[index] for index in indices] print(sorted_list) # 👉️ ['a', 'b', 'c', 'd']
如果您使用numpy向下滚动到下一个副标题。

indices列表存储将对列表进行排序的索引。

sorted函数接受一个可迭代对象,并从可迭代对象中的项目返回一个新的排序列表。

主程序
a_list = ['a', 'b', 'd', 'c'] sorted_list = sorted(a_list) print(sorted_list) # 👉️ ['a', 'b', 'c', 'd']

我们使用range()该类来获取range列表长度的对象。

主程序
a_list = ['a', 'b', 'd', 'c'] print(list(range(len(a_list)))) # 👉️ [0, 1, 2, 3]

范围通常用于循环特定次数。

sorted()函数采用可选key参数,可用于按不同标准进行排序。

主程序
a_list = ['a', 'b', 'd', 'c'] indices = sorted( range(len(a_list)), key=lambda index: a_list[index] ) print(indices) # 👉️ [0, 1, 3, 2]

key参数可以设置为确定排序标准的函数

我们对索引进行排序,但我们使用的标准是列表中的每个值。

使用对象中的每个索引调用 lambda 函数,range并使用相应的列表项作为排序标准。

如果您还需要对列表进行排序,则可以使用列表理解。

主程序
a_list = ['a', 'b', 'd', 'c'] indices = sorted( range(len(a_list)), key=lambda index: a_list[index] ) print(indices) # 👉️ [0, 1, 3, 2] sorted_list = [a_list[index] for index in indices] print(sorted_list) # 👉️ ['a', 'b', 'c', 'd']

我们使用列表理解来遍历索引列表并返回每个列表项。

列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。

可以使用相同的方法来获取已排序数字列表的索引。

主程序
a_list = [1, 2, 4, 3] indices = sorted( range(len(a_list)), key=lambda index: a_list[index] ) print(indices) # 👉️ [0, 1, 3, 2] sorted_list = [a_list[index] for index in indices] print(sorted_list) # 👉️ [1, 2, 3, 4]

或者,您可以使用该numpy.argsort()方法。

使用 numpy.argsort() 获取排序列表的索引

使用该numpy.argsort()方法获取排序列表的索引,例如
indices = np.argsort(a_list). numpy.argsort()方法返回对类数组对象进行排序的索引。

主程序
import numpy as np a_list = ['a', 'b', 'd', 'c'] indices = np.argsort(a_list) print(indices) # 👉️ [0 1 3 2] sorted_list = [a_list[index] for index in indices] print(sorted_list) # 👉️ ['a', 'b', 'c', 'd']

numpy.argsort方法采用类似

数组的对象并返回对数组进行排序的索引。

indices变量将索引存储在数组中,但
tolist()如果需要将数组转换为列表,则可以使用该方法。

主程序
import numpy as np a_list = ['a', 'b', 'd', 'c'] indices = np.argsort(a_list).tolist() print(indices) # 👉️ [0, 1, 3, 2] sorted_list = [a_list[index] for index in indices] print(sorted_list) # 👉️ ['a', 'b', 'c', 'd']

tolist
方法将
数组
转换为列表。