“for”语句中的list [i]不返回正确的值

时间:2015-03-13 21:51:59

标签: python for-loop

我有一个带有循环变量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

1 个答案:

答案 0 :(得分:1)

您确实正在修改thescale中的makechord()

crdscl=thescale

只需将名称crdscl分配给thescale,以便稍后再拨打

crdscl.pop(0)
crdscl.append(tomove)

您实际上正在修改thescale的内容。避免这种情况的一种简单方法是将内容thescale的副本分配给crdscl

crdscl = thescale[:]