如何根据索引获取排列?
我有一个对象的列表:
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
是一个正确的排列,包含从 0
到 n
的所有数字(每个数字都出现一次),那么下面的代码应该可以正常运行:
result=[array[i] for i in permutation]