【发布时间】:2021-02-07 04:30:44
【问题描述】:
我有点困惑为什么下面的函数有效。我正在尝试将任何数组移动 n 次。我通过创建一个与原始数组长度相同的新数组来做到这一点,并相应地替换数组中的值。
test = [6,1,4,7,8]
def shiftArray(input_array, n):
max_len = len(input_array)
max_idx_len = len(input_array)-1
shifted_array = [None]*max_len
for i in range(0, max_len):
if i == 0:
shifted_array[i] = input_array[max_len-n]
else:
shifted_array[i] = input_array[i-n]
return shifted_array
print(shiftArray(test,1))
我最初将 for 循环的范围设置为 range(0, max_idx_len),这对我来说是有意义的,因为数组的索引从 0 开始。但是当我这样做时,数组的最后一个值从未被替换。所以相反,我做了range(0, max_len),它起作用了。但我还是不明白为什么。
此数组中有 5 个值,最大索引为 4,所以当我重新分配 shifted_array 的最后一个索引时 - 我不应该重新分配 shifted_array[4] 而不是 shifted_array[5] 吗?为什么会这样!?
【问题讨论】:
标签: python