[Tutor] Query regarding output

anupama srinivas murthy anupama.2312.bmsit at gmail.com
Thu Jun 29 06:35:45 EDT 2017


for a[x] in a:
   print(a)

Except for when x = 0, a[x] never takes on its original value throughout
the iterations

So for x = 0, we get:

[0, 1, 2, 3]
[1, 1, 2, 3]
[2, 1, 2, 3]
[3, 1, 2, 3]

For x = 1:
[0, 0, 2, 3]
[0, 0, 2, 3]
[0, 2, 2, 3]
[0, 3, 2, 3]

For x = 2:
[0, 1, 0, 3]
[0, 1, 1, 3]
[0, 1, 1, 3]
[0, 1, 3, 3]

How is the array being transformed?

On 29 June 2017 at 14:32, Alan Gauld via Tutor <tutor at python.org> 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.
>
> 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
>
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>



-- 

Thank you
Anupama


More information about the Tutor mailing list