[Tutor] Query regarding output
Alan Gauld
alan.gauld at yahoo.co.uk
Thu Jun 29 05:02:14 EDT 2017
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.
Another way to see it is to convert the for loop to
a while loop:
for variable in collection:
process(variable)
becomes
collection = [some sequence]
index = 0
while index < len(collection):
variable = collection[index]
process(variable)
index += 1
Now substitute your values:
collection = [0,1,2,3]
index = 0
while index < len(collection):
collection[-1] = collection[index]
print(collection[-1])
index += 1
Does that help?
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos
More information about the Tutor
mailing list