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中,两个赋值是同时且独立地进行的。
a, b = b, a
但如果使用复杂表达式,则涉及到表达式中的运算顺序。 - GACy20