0
votes

"Index de liste hors de portée" lors de la liste d'inversion

Le problème concerne l'inverser une liste A de taille N dans des groupes de K. Par exemple, si a = [1,2,3,4,5] code>, k = 3 sortie = [3,2,1,5,4] code> L'erreur que je reçois, lorsque j'exécute, il s'agit d'index de liste hors de portée de la ligne 4.

def reverseInGroups(A,N,K):   
    arr1 = []
    for i in range(K):
        arr1.append(A[(N-i)%K]) #line 4
    for j in range(N-K):
        arr1.append(A[N-j-1])
    return arr1


1 commentaires

Aucune erreur reproductible? Imprimer (RealingRoups ([1,2,3,4,5], 5, 3)) => [3, 2, 1, 5, 4]


4 Réponses :


1
votes

Cela implémentera ce que vous essayez d'atteindre: xxx

intéressant, le code de la question fonctionne réellement dans l'exemple, mais ce n'est pas général. Le cas où il fonctionne est l'endroit où n = 2 * k-1 (bien que cela ne fonctionne pas, les éléments sont dans le mauvais ordre plutôt qu'un indexerror).


0 commentaires

1
votes

ne peut pas sembler reproduire votre erreur 'index de liste hors de portée' code> erreur, mais votre logique est défectueuse:

2 [2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 11]
3 [3, 2, 1, 6, 5, 4, 9, 8, 7, 11, 10]
4 [4, 3, 2, 1, 8, 7, 6, 5, 11, 10, 9]
5 [5, 4, 3, 2, 1, 10, 9, 8, 7, 6, 11]
6 [6, 5, 4, 3, 2, 1, 11, 10, 9, 8, 7]
7 [7, 6, 5, 4, 3, 2, 1, 11, 10, 9, 8]


0 commentaires

0
votes

Vous pouvez également essayer avec ceci:

def reverse(l, n):
    result = []
    for i in range(0, len(l)-1, n):
        for item in reversed(l[i:i+n]):
            result.append(item)
    for item in reversed(l[i+n:]):
        result.append(item)
    return result


0 commentaires

0
votes

Vous pouvez inverser le tableau UPTO INDEX k code> et inverser la pièce restante et ajouter ces deux tableaux.

def reverseInGroups(A,N,K):
    return A[:K][::-1]+A[K:][::-1]

A = [1,2,3,4,5]
N = 5
K = 3

res = reverseInGroups(A,N,K)
print(res)


0 commentaires