[Tutor] Query regarding output

Mats Wichmann mats at wichmann.us
Thu Jun 29 08:24:49 EDT 2017


On 06/29/2017 03:02 AM, Alan Gauld via Tutor wrote:
> On 29/06/17 03:14, shubham goyal wrote:
> 
>> This Question is asked in some exam. i am not able to figure it out.
>>
>> a = [0, 1, 2, 3]
>> for a[-1] in a:
>>     print(a[-1])
>>
>> its giving output 0 1 2 2
>>
>> it should be 3 3 3 3 as a[-1] belongs to 3.
>> can anyone help me figuring it out.
> 
> This is quite subtle and it took me a few minutes to figure
> it out myself.
> 
> It might be clearer if we print all of 'a' instead
> of a[-1]:
> 
>>>> for a[-1] in a:
> ...    print(a)
> ...
> [0, 1, 2, 0]
> [0, 1, 2, 1]
> [0, 1, 2, 2]
> [0, 1, 2, 2]
> 
> What is happening is that a[-1] is being assigned the value
> of each item in a in turn. The final iteration assigns a[-1]
> to itself, thus we repeat the 2.


Ugh.  I guess on an exam where they're trying to see if you can tease it
out, as you may one day have to debug such a sequence... but don't write
code like that.  One of the reasons people like "functional programming"
is it avoids these kind of side effects.


More information about the Tutor mailing list