刚开始学习python时,我正在尝试编写一个函数,将给定列表中的整数向右旋转,感觉自己发现了一个bug。到目前为止,我想到的代码是:
def LROTR (L, n): # shifting lists to right
n = -n%len(L)
for i in range(0, n):
L.append(L.pop(0))
return L
sp0 = list(range(31, -1, -1))
print(sp0)
s0p7 = LROTR(sp0, 7)
s0p18 = LROTR(sp0, 18)
print(sp0)
变量sp0应该是在旋转之前的列表,在调用LROTR函数后会被无缘无故地更改!有人能帮我解决这个问题吗?这真的是个虫子还是我误会了Python
在Windows 10上使用Python 3.7.0时,我的打印输出是:
[31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
[7, 6, 5, 4, 3, 2, 1, 0, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8]
我期望:
[31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
[31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
列表是可变的:如果将对列表的引用交给函数,该函数可以修改列表
您可能要做的是为函数提供列表的副本:
相关问题 更多 >
编程相关推荐