python列表排序并返回索引

三种方法

numpy中有函数argsort来返回排序后的下标

import numpy as np

nums = [4, 1, 5, 2, 9, 6, 8, 7]
print(np.argsort(nums))

结果

[1 3 0 2 5 7 6 4]

pytorch中的torch.sort本身就能返回排序后的下标

Python中没有直接调用的接口,怎么办呢?
用enumerate再排序就可以了

nums = [4, 1, 5, 2, 9, 6, 8, 7]
sorted_nums = sorted(enumerate(nums), key=lambda x: x[1])
idx = [i[0] for i in sorted_nums]
nums = [i[1] for i in sorted_nums]

结果

[1, 3, 0, 2, 5, 7, 6, 4]
[1, 2, 4, 5, 6, 7, 8, 9]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容