众所周知,交换两个项 a
和 b
的值的 Python 方法是
a, b = b, a
它应该相当于
b, a = a, b
然而,今天当我在编写一些代码时,我意外地发现以下两个交换产生了不同的结果:
nums = [1, 2, 4, 3]
i = 2
nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]
print(nums)
# [1, 2, 4, 3]
nums = [1, 2, 4, 3]
i = 2
nums[nums[i]-1], nums[i] = nums[i], nums[nums[i]-1]
print(nums)
# [1, 2, 3, 4]
这对我来说太难以置信了。有人能给我解释一下这里发生了什么吗?我认为在 Python 交换中,两个任务同时独立地发生。