擅长:python、mysql、java
<p>似乎无法重现您的<code>'List index out of range'</code>错误,但您的逻辑有错误:</p>
<blockquote>
<pre><code>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
</code></pre>
</blockquote>
<pre><code>print(reverseInGroups([1,2,3,4,5],5, 3)) # works, others get wrong result
print(reverseInGroups([1,2,3,4,5,6],6, 3)) # wrong result: [1, 3, 2, 6, 5, 4]
</code></pre>
<p>印刷品:</p>
<pre><code>[3, 2, 1, 5, 4] # correct
[1, 3, 2, 6, 5, 4] # wrong
</code></pre>
<hr/>
<p>您可以修复此问题,并通过将其打包到列表中使其变小:</p>
<pre><code>def revv(L,k):
return [w for i in (L[s:s+k][::-1] for s in range(0,len(L),k)) for w in i]
for gr in range(2,8):
print(gr, revv([1,2,3,4,5,6,7,8,9,10,11],gr))
</code></pre>
<p>要获得:</p>
<pre><code>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]
</code></pre>