# How can i get a permutation given indexes?

 Refresh December 2018 Views 1.8k time
3

I've got a list of objects:

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

and i want to change the order of the items given a permutation:

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

Is there a command in python that will do something like:

``````result = Permute(array,permutation)

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

I know i can do it with a simple `for` loop....

0

# Используйте перетасовать метод из NumPy

``````import numpy as np
arr = np.arange(10)
np.random.shuffle(arr)
print(arr)
``````

[1 7 5 2 9 4 3 6 0 8]

3

Просто для полноты версии, в которой для вообще:

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

Я предпочел бы придерживаться списка на понимание ребят, хотя. ;)

4

В Python, это легко сделать с помощью списка понимания :

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

Если мы предполагаем , что `permutation`это правильная перестановка `0-n`(каждый появляется ровно один раз), то следующий код должен работать:

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