How does this chain assignment work?

python, variable-assignment

Solution

On line 3 you have a chained assignment

t = A[t] = A.count(3)

`t = A.count(3)` is evaluated first – `t` set to the return value of `A.count(3)` which in this case is 1. Then the member of `A` at index `t`(=1) is set to the return value of `A.count(3)`, which is still 1.

Read more about chained assignments in Python here

Problem

Consider the following code; it is a bad programming practice. I am wondering why the resulting list `A` is `[1, 1, 3]` rather than `[1, 2, 1]`. From the view of Java, the result should be `[1, 2, 1]`. Can anyone explain why this result is what it is? ``` A = [1, 2, 3] t = 2 t = A[t] = A.count(3) ``` After evaluation, A is `[1, 1, 3]` and t is `1`. My Python version is 3.3.

Original source

Related problems