python交换两个元素

时间:2017-09-21 20:27:57

标签: python variable-assignment

我有一个小程序的代码:

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中的赋值同时分配了两个元素?

0 个答案:

没有答案