如何对数字列表升序排序并保留各元素对应的原始索引
实现逻辑
将列表元素和它对应的原始索引绑定为一个组合单元,以元素值为排序依据对组合单元进行升序排序,排序完成后再从组合单元里分别提取索引和元素即可。
Python 实现代码
a = [22,2,4,53,43,32,3,5,1,101] # 绑定索引与元素,按元素值升序排列 sorted_items = sorted(enumerate(a), key=lambda x: x[1]) # 提取排序后的原始索引序列 sorted_index = [item[0] for item in sorted_items] # 提取排序后的元素序列 sorted_a = [item[1] for item in sorted_items] # 打印验证结果 print("index", *sorted_index) print("a =", sorted_a)
运行后输出和要求的结果完全一致:
index 8 1 6 2 7 0 5 4 3 9 a = [1, 2, 3, 4, 5, 22, 32, 43, 53, 101]
其他语言通用实现思路
所有支持自定义排序规则的语言都可以用相同逻辑实现:
- 第一步:遍历原始列表,生成「(原始索引, 元素值)」的组合列表
- 第二步:以组合单元中的元素值为依据,对组合列表做升序排序
- 第三步:遍历排序后的组合列表,分别提取索引和元素值得到最终结果
内容的提问来源于stack exchange,提问作者Savannah
相关产品推荐
相关产品推荐

