Pelo que entendi da sua pergunta, parece que você deseja aplicar uma permutação especificada em a list. Isso é feito especificando outro list(vamos chamá-lo p) que contém os índices dos elementos do original listque deveriam aparecer no permutado list. Você então usa ppara fazer um novo listsimplesmente substituindo o elemento em cada posição por aquele cujo índice está nessa posição em p.
def apply_permutation(lst, p):
return [lst[x] for x in p]
arr=list("abcde")
new_order=[3,2,0,1,4]
print apply_permutation(arr,new_order)
Isto imprime ['d', 'c', 'a', 'b', 'e'] .
Na verdade, isso cria um novo list, mas pode ser modificado trivialmente para permutar o original "no lugar".