如何在Python中获取已排序数组的索引我有一个数字列表:myList = [1, 2, 3, 100, 5]现在,如果我对此列表进行排序以获取[1, 2, 3, 5, 100]。我想要的是排序顺序中原始列表中元素的索引,即[0, 1, 2, 4, 3] --- ala MATLAB的sort函数,它返回值和索引。
3 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
像下一个:
>>> myList = [1, 2, 3, 100, 5]>>> [i[0] for i in sorted(enumerate(myList), key=lambda x:x[1])][0, 1, 2, 4, 3]
enumerate(myList)
为您提供包含(索引,值)元组的列表:
[(0, 1), (1, 2), (2, 3), (3, 100), (4, 5)]
您可以通过将列表传递给sorted
并指定一个函数来对列表进行排序,然后指定一个函数来提取排序键(每个元组的第二个元素;这就是lambda
它的用途。最后,使用列表推导提取每个已排序元素的原始索引[i[0] for i in ...]
。
阿晨1998
TA贡献2037条经验 获得超6个赞
myList = [1, 2, 3, 100, 5] sorted(range(len(myList)),key=myList.__getitem__)[0, 1, 2, 4, 3]
添加回答
举报
0/150
提交
取消