Avendo due liste, la prima con gli elementi e la seconda con le posizioni, devi spostare per k volte gli elementi nelle loro posizioni indicate nella lista delle posizioni. Praticamente se hai la lista l=[1,2,3,4,5] e le posizioni p=[2,3,1,0,4] prendendo singolarmente ogni numero devi fare così:
l[0] è 1 e devi spostarlo in posizione p[0] che è 2. Quindi l'1 dalla posizione 0 va in posizione 2. Ottieni una lista così [1,2,1,3,4] (immagina che sia una lista diversa dall'originale perché mi sembra che non vada cambiata). Poi vai in l[1] che è 2 e lo sposti in p[1] cioè 3. Ottieni [1,2,1,2,4]. Poi vai in l[2] che è 3 e lo metti in p[2] che è 1. Ottieni [1,3,1,2,4]. Poi l[3] che è 4 lo sposti in p[3] cioè 0. Ottieni [4,3,1,2,4]. Ora l[4] lo sposti in p[4] quindi ottieni [4,3,1,2,5]
Per dirla meglio
Facendo scorrere i da 0 a len(l)-1, sposti l[i] in l[p[i]]. La lista originale non va modificata