我尝试在 Python 中分配三个表达式,但结果出乎意料。
让我们从简单的交换开始。你可能知道这个任务的结果:
A = [10, 11, 12]
p = 0
A[p + 1], A[p] = A[p], A[p + 1] # <--
print(A)
结果是(如预期的那样):
[11, 10, 12]
现在我想更大胆一点,所以尝试了这个任务:
A = [10, 11, 12]
p = 0
p, A[p + 1], A[p] = p + 1, A[p], A[p + 1] # <--
print(A)
我以为结果会是:
[10, 12, 11]
然而,结果是:
[10, 11, 10]
这是出乎意料的!
我阅读了有关作业的 Python 文档:
尽管赋值的定义意味着左侧和右侧之间的重叠是“同时”的(例如 a, b = b,a 交换两个变量),但分配给变量的集合内的重叠发生在左侧- 向右,有时会导致混乱。例如,以下程序打印 [0, 2]:
x = [0, 1]
i = 0
i, x[i] = 1, 2 # i is updated, then x[i] is updated
print(x)
我的交换没有得到类似的结果。我不明白我的交换背后的逻辑。这是怎么回事?
qq_笑_17
相关分类