我有一个小程序的代码:
def get_different_number(arr):
if len(arr) == 0 or arr is None:
return 0
n = len(arr)
for i in range(n):
print (str(i))
temp = arr[i]
while (temp < n and temp != arr[temp]):
temp, arr[temp] = arr[temp],temp
for i in range(n):
if arr[i] != i:
return i
return n
test = [0,1,2,4,5]
get_different_number(test)
然而,当它执行时,它告诉我在交换temp和arr [temp]的行中存在问题,它给出了一个列表索引超出范围错误,在i是3(temp是4)。 / p>
当我将该行更改为arr [temp],temp = arr [temp],temp(反向赋值顺序)时,它工作正常。为什么会这样?我认为a,b = b,python中的赋值同时分配了两个元素?