Из того, что я понимаю по вашему вопросу, видно, что вы хотите применить перестановку, указанную вами для list
. Это делается путем указания другого list
(назовем его p
), который содержит индексы элементов исходного list
, которые должны появиться в переставленном list
. Затем вы используете p
для создания нового list
, просто заменяя элемент в каждой позиции тем, чей индекс находится в этой позиции в 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)
Это печатает ['d', 'c', 'a', 'b', 'e']
.
Это фактически создает новый list
, но его можно тривиально изменить, чтобы переставить оригинал "на месте".