【发布时间】:2022-01-09 20:38:14
【问题描述】:
我刚刚开始编程并开始解决问题。在实践过程中,我遇到了这个问题,无法理解为什么我的代码不起作用。 所以任务是循环旋转由N个元素组成的数组,顺时针旋转K。
示例 1: 5——N值
{10, 20, 30, 40, 50} — Arr 的元素[ ]
2——K的值
输出: 40 50 10 20 30
我试图通过这个 Python 3 代码解决它:
Arr=[]
Arr2=[]
N=int(input("Enter the number of elements:"))
k=int(input())
if (k>N):
k=k%N
for i in range (0,N):
a=input()
Arr.append(a)
for i in range (0,N):
if ((i+k)<N):
Arr2[i+k]=Arr[I]
else:
Arr2[i+k-N]=Arr[I]
print (Arr2)
它显示 arr2[i+k] 的 IndexError,即使它不应该进入该索引,因为存在条件 (i+k
【问题讨论】:
-
你可以使用多个循环吗?我会将元素从 K 追加到 N,然后从 0 到 K 追加到新列表中。你的
Arr2是空的,所以没有(i+k)th 索引。 -
使用
(i+k)%N无论 i+k 的值是多少,这将确保您保持在界限内 -
一种更简单的方法是使用
a[k+1:] + a[:k+1]剪切和缝合列表,或者使用collections.deque并仅使用其rotate方法。