我有这段代码:
Array = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
for c in range(1, len(Array)):
if(Array[c]==-1):
continue
temp = Array[c]
i = c
d = c-1
while(d>=0):
if(Array[d]==-1):
d-=1
continue
if(temp>=Array[d]):
break
Array[i] = Array[d]
i = d
d-=1
Array[i] = temp
当我按编写的方式运行代码时,最终的数组是:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
但是,当我将最后一行更改为“Array [i] = Array [c]”而不是“Array [i] = temp”时,最终的数组是:
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
这对我没有意义。如果“temp”是数组[c],为什么更改该行会产生这种差异?
答案 0 :(得分:4)
temp
获取Array[c]
的值,但第一次执行Array[c]
时,存储位置Array[i] = Array[d]
将被其他值覆盖(自i==c
起原来)。 temp
可以保留初始值,以便您以后可以使用它,即使Array[c]
本身已被重置。