如何根据索引获取排列?

7 投票
5 回答
7555 浏览
提问于 2025-04-16 20:10

我有一个对象的列表:

array = [object0,object1,object2,object3,object4]

我想根据一个排列来改变这些项目的顺序:

permutation = [ 2 , 4 , 0 , 1 , 3 ]

在Python中有没有什么命令可以做到类似这样的事情:

result = Permute(array,permutation)

result = [object2,object4,object0,object1,object3]

我知道我可以用一个简单的 for 循环来实现这个功能……

5 个回答

3

为了让内容更完整,这里有一个完全不使用for的版本:

seed = ['foo', 'bar', 'baz']
permutation = [1, 2, 0]
result = map(lambda i: seed[i], permutation)
print result # --> ['bar', 'baz', 'foo']

不过我还是更喜欢用列表推导式的方式。;)

5

在Python中,这个操作很简单,可以通过一种叫做列表推导式的方法来实现:

result = [array[i] for i in permutation]
10

如果我们假设 permutation 是一个正确的排列,包含从 0n 的所有数字(每个数字都出现一次),那么下面的代码应该可以正常运行:

result=[array[i] for i in permutation]

撰写回答