在 Python 中获取排序列表的索引
Get the indices of a sorted list in Python
要获取排序列表的索引:
- 使用
range()
该类创建range
列表长度的对象。 - 使用该
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] 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
方法将数组
转换为列表。