On 9/2/2015 8:26 AM, Steven D'Aprano wrote:
On Wed, 2 Sep 2015 08:01 pm, Antoon Pardon wrote:
a = [1, 2, 3, 4, 5]
b = 1
b, a[b] = a[b], b
a
[1, 2, 1, 4, 5]
Equivalent to:
temp1 = a[b] # a[1] == 2
temp2 = b # 1
b = temp1 # b = 2
a[b] = temp2 # a[2] = 1
Or using a queue (FIFO) rather than temp variables:
push a[b]
push b
b = pop
a[b] = pop
which seems sensible to me. The right hand side of the assignment is
evaluated left-to-right, and then the assignments are made, from
left-to-right. Which I believe matches the documented order.
It does, and '7.2 Assignment statements' ends with this example:
"""
For instance, the following program prints [0, 2]:
x = [0, 1]
i = 0
i, x[i] = 1, 2 # i is updated, then x[i] is updated
print(x)
"""
--
Terry Jan Reedy
--
https://mail.python.org/mailman/listinfo/python-list