我正在尝试循环移动数组的元素,以便所有元素都被前一个元素替换,最后一个元素旋转到第一个元素,如下所示:shift(1, [5, 6, 7])=> [7, 5, 6].
以下代码只返回 [7,5]。有人可以告诉我是什么导致了这种情况发生吗?我一步一步地浏览代码,根本找不到解决方案。我还尝试了 3 种不同的口译员。
def shift(key, array):
counter = range(len(array)-1)
new = counter
for i in counter:
new[i] = array[i-key]
return new
print shift(1, [5, 6, 7])
请您参考如下方法:
range(5) 返回 [0, 1, 2, 3, 4]。它不包括 5。
只需从 range(len(array)-1) 中删除 -1 就可以了。
您还可以使用列表切片:
def shift(key, array):
return array[-key:] + array[:-key]
