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]
A
[1, 1, 3]
[1, 2, 1]
A.count(3) yields 1.
A.count(3)
1
t = 1 is executed first. Now t is 1.
t = 1
t
A[t] = 1 is executed. (A[1] = 1)
A[t] = 1
A[1] = 1
>>> class Demo: ... def __setitem__(self, idx, value): ... print 'Set index', idx ... >>> d = Demo() >>> d[1] = d[2] = 2 Set index 1 Set index 2