З того, що я розумію у вашому питанні, виходить, що ви хочете застосувати перестановку, яку ви вказуєте на 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, але його можна тривіально модифікувати для перестановки оригіналу "на місці".