📌  相关文章
📜  根据给定的索引对数组重新排序(1)

📅  最后修改于: 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函数

另一种方法是使用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函数都可以实现这个功能。需要注意的是,使用哪种方法取决于个人的喜好和代码的特殊要求。