我正在尝试交换列表中的 2 个元素。我想将索引 0 处的元素交换到索引 arr[0] 处的元素,所以基本上我想交换 arr[0] <-> arr[arr[0]]。
我一直使用这种方法在索引 i 和 j 之间交换元素:
arr[i], arr[j] = arr[j], arr[i]
但在这种情况下似乎不起作用。如果我这样做:
arr = [1, 2, 3, 4, 5]
arr[0], arr[arr[0]] = arr[arr[0]], arr[0]
print(arr)
[2, 2, 1, 4, 5]
但我希望:
arr = [1, 2, 3, 4, 5]
tmp = arr[arr[0]]
arr[arr[0]] = arr[0]
arr[0] = tmp
print(arr)
[2, 1, 3, 4, 5]
有人能解释一下这种行为吗?
最佳答案
您应该首先更改 arr[arr[0]]
值,然后更改 arr[0]
值。
所以换个地方就能解决问题。
arr = [1, 2, 3, 4, 5]
arr[arr[0]] , arr[0] = arr[0] , arr[arr[0]]
print(arr)
[2, 1, 3, 4, 5]
关于python - 使用一行多重赋值在列表中交换元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65757053/