📅  最后修改于: 2023-12-03 14:55:40.719000             🧑  作者: Mango
在开发过程中,我们经常需要对数组进行排序。但是,在某些情况下,需要根据给定的索引对数组进行重新排序,这时候就需要使用一些特殊的技巧来实现。
一种方法是使用嵌套数组,其中第一个数组包含要排序的元素,第二个数组包含对应的索引。然后,对第二个数组进行排序,并使用相应的索引对第一个数组进行重新排序。
以下是一个示例代码:
arr = ['a', 'b', 'c', 'd', 'e']
idx = [3, 0, 4, 1, 2]
sorted_arr = [x for _, x in sorted(zip(idx, arr))]
这段代码根据idx
数组对arr
数组进行重新排序。执行结果为:
['b', 'd', 'e', 'c', 'a']
另一种方法是使用lambda函数,它可以根据给定的索引对数组进行排序。
以下是一个示例代码:
arr = ['a', 'b', 'c', 'd', 'e']
idx = [3, 0, 4, 1, 2]
sorted_arr = sorted(range(len(arr)), key=lambda x: idx[x])
这段代码同样是根据idx
数组对arr
数组进行重新排序。执行结果为:
[1, 3, 4, 2, 0]
以上就是两种根据给定的索引对数组重新排序的方法。使用嵌套数组和lambda函数都可以实现这个功能。需要注意的是,使用哪种方法取决于个人的喜好和代码的特殊要求。