我们都知道,在python中交换两个项目中a和b值的方法是:
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交换中,这两个赋值是同时且独立发生的。
assignment statement
assginment 先计算右侧得到一个 tuple ,然后将 tuple 中的值依次赋值给左侧的变量。