Python支持单行A/B交换(A,B=B,A),我们预计(B,A=A,B)会得到相同的结果.然而,我在处理列表条目时遇到了一个奇怪的行为.我在下面的代码中简化了我的发现:
nums = [0, 0, 0, 0]
n = 2
print(nums, "expected case")
nums[n - 1], n = n, nums[n - 1]
print(n, nums)
nums = [0, 0, 0, 0]
n = 2
print(nums, "unexpected case")
n, nums[n - 1] = nums[n - 1], n
print(n, nums)
以下是执行上述程序的输出:
[0, 0, 0, 0] expected case
0 [0, 2, 0, 0]
[0, 0, 0, 0] unexpected case
0 [0, 0, 0, 2]
问题:为什么上面的顺序改变会导致不同的结果?在第一种情况下,[-n]会在更新到nums之前出现.