我有一个带有循环变量for
的{{1}}语句,每次自然增加1。但是,当我使用获得某个列表的索引i
的行运行for
语句时,它会做一些奇怪的事情。会发生什么,它返回的极少数正确的值和其他看似随机的值。
i
def allchords(thescale,issev):
for i in range(len(thescale)):
makechord((thescale[i]),thescale,issev)
时,它会正确返回i=0
。
thescale[0]
时,它会正确返回i=1
。
thescale[1]
时,由于某种原因,它会返回i=2
。
thescale[3]
时,会返回i=3
thescale[6]
时,会返回i=4
thescale[3]
时,会返回i=5
thescale[1]
时,会返回i=6
到底发生了什么事?
好的,这是整个thescale[0]
函数:
makechord
答案 0 :(得分:1)
您确实正在修改thescale
中的makechord()
:
crdscl=thescale
只需将名称crdscl
分配给thescale
,以便稍后再拨打
crdscl.pop(0)
crdscl.append(tomove)
您实际上正在修改thescale
的内容。避免这种情况的一种简单方法是将内容thescale
的副本分配给crdscl
:
crdscl = thescale[:]