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
4 Réponses :
Cela implémentera ce que vous essayez d'atteindre: 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). P> P>
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]
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
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)
Aucune erreur reproductible?
Imprimer (RealingRoups ([1,2,3,4,5], 5, 3)) Code> =>
[3, 2, 1, 5, 4] code>