gpt4 book ai didi

python - 左旋转数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:32:30 24 4
gpt4 key购买 nike

我试图在 python3 中左旋转一个数组。我使用的代码是:

def rotLeft(a, d):
b = a
lengthOfArray = len(a)
shift = d

for i in range (0,lengthOfArray):
print(a)
newLocation = (i + (lengthOfArray - shift)) % lengthOfArray
b[newLocation] = a[i]

return b

if __name__ == '__main__':

nd = input().split()

n = int(nd[0])

d = int(nd[1])

a = list(map(int, input().rstrip().split()))

result = rotLeft(a, d)

print(result)

它需要来自用户的三个输入,即元素数组的长度、要执行的旋转次数和数组本身。但是,数组不是旋转元素,而是在相同位置填充第一个元素。例如:

输入:

5 4
12 76 1 09 13

输出:

[12, 12, 12, 12, 12]

我的算法有什么问题,我该如何解决?

最佳答案

你的旋转方法的第一行有一个错误:

b = a 这样的简单赋值不会像人们期望的那样创建列表的真实副本。相反,两个变量都指向内存中的同一个列表。因此,如果您在 a 中更改某些内容,更改也会反射(reflect)在 b 中,反之亦然。

创建该数组的新副本,请使用:

b = a[:]

有关复制数组的更多可能性,请查看:How to clone or copy a list?

关于python - 左旋转数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56057149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com