我们都知道,交换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交换中,这两个任务同时独立地发生.