用python中的k个元素右旋转数组



我尝试的代码显示IndexError:列表赋值索引超出范围。请帮我解决这个问题。代码如下:

def rightrotate(source,k):
temp_array=[0]*k
i=len(source)-1
j=0
while(i>=k+1):
temp_array[j]=source[i]
i-=1
j+=1
i=len(source)-1
while(i>=k):
source[i]=source[i-k]
i-=1
i=0
j=0
while(i<k):
source[i]=temp_array[j]
i+=1
j+=1
source=[10,20,30,40,50,60,70]
rightrotate(source,2)
print(source)

你可以这样做:

source=[10,20,30,40,50,60,70]
def right_rot(lst, k):
return lst[-k:] + lst[:-k]
print(right_rot(source, 2))  # -> [60, 70, 10, 20, 30, 40, 50]

最新更新