在python中移动数组的元素

use*_*199 1 python arrays

我试图移动数组的元素,所以所有元素都替换为前一个元素,如下所示: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])
Run Code Online (Sandbox Code Playgroud)

Ble*_*der 11

range(5)回报[0, 1, 2, 3, 4].它不包括在内5.

只是删除-1range(len(array)-1)它应该工作.

您还可以使用列表切片:

def shift(key, array):
    return array[-key:] + array[:-key]
Run Code Online (Sandbox Code Playgroud)


Pet*_*nov 5

这是python的方式:

def shift(key, array):
    return array[-key:]+array[:-key]
Run Code Online (Sandbox Code Playgroud)