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. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor