如何在Python中对带enumerate标记的列表排序并保留原始下标
为带原始下标的数组按元素值排序
你已经通过enumerate()给数组元素加上了原始下标,接下来只需要在排序时指定**按元组的第二个元素(原数组值)**作为排序依据即可,这样原始下标会自动跟随对应元素。
实现代码
arr = [102, 4325, 5125, 657, 2643] # 给元素添加原始下标 arr_with_index = list(enumerate(arr)) # 按元素值升序排序,key指定取元组的第二个元素 sorted_arr = sorted(arr_with_index, key=lambda x: x[1]) print(sorted_arr)
输出结果
[(0, 102), (3, 657), (4, 2643), (1, 4325), (2, 5125)]
补充说明
- 如果想直接在原列表上修改(不生成新列表),可以用列表的
sort()方法:arr_with_index.sort(key=lambda x: x[1]) lambda x: x[1]的作用是告诉排序函数,每个元素的排序依据是元组里的第二个值(也就是原数组的元素值),这样排序后原始下标会和对应的元素绑定在一起。
内容的提问来源于stack exchange,提问作者klg
相关产品推荐
相关产品推荐

