python中排序并返回原始索引
时间: 2023-12-12 19:56:24 浏览: 194
python可包含重复值的列表排序算法,对输入列表进行按规则排序,输出新列表和排序数据的原索引
可以使用`enumerate`函数来获取原始索引,然后使用`sorted`函数对列表进行排序,最后使用`sorted`后的索引列表对原始列表进行重新排序即可。
示例代码如下:
```python
lst = [3, 1, 4, 2]
sorted_idx = sorted(range(len(lst)), key=lambda x: lst[x])
sorted_lst = [lst[i] for i in sorted_idx]
orig_idx = [i for i, _ in enumerate(lst)]
orig_lst = [orig_idx.index(i) for i in sorted_idx]
print(sorted_idx) # [1, 3, 0, 2]
print(sorted_lst) # [1, 2, 3, 4]
print(orig_lst) # [2, 0, 3, 1]
```
其中,`sorted_idx`是排序后的索引列表,`sorted_lst`是原始列表按照`sorted_idx`排序后的结果,`orig_lst`是按照`sorted_idx`排序后的索引,对原始索引列表进行重新排序得到的结果。
阅读全文