如何根据第二个索引列表重新排列一个列表

Ani*_*mes 3 python list python-2.7

我有一个包含10个项目的列表,以及另外10个随机不重复的数字列表,如下所示:

l = [a,b,c,d,e,f,g,h,i,j]
m = [1,4,5,9,2,6,3,7,8,10]
Run Code Online (Sandbox Code Playgroud)

我想重新排列l,以便每个项目都l从中获取相应的索引m.

例如,b应该成为第四个,并e成为第二个.

我真的坚持算法,逻辑让我烦恼,所以我对如何处理这个问题一无所知.

我怎样才能做到这一点?

cri*_*007 6

如果你只是试图根据其他列表位置移动元素,你可以遍历所有元素m并抓住l使用列表理解的元素

l2 = [l[i - 1] for i in m] 
Run Code Online (Sandbox Code Playgroud)

但是如果你确实想要基于其他列表的排序,你需要将它们压缩在一起,对索引进行排序,然后提取元素

[y for x,y in sorted(zip(m,l))] 
Run Code Online (Sandbox Code Playgroud)