+ 3
Why y does not change?
x=[1,2,3,4,5] y=x x=x+[3] print(y) #output=[1,2,3,4,5] but output should be [1,2,3,4,5,3] because x is change.can anyone explain this.
7 Answers
+ 3
I find it.
y depend upon first x only but y does not depend upon 2nd x.so we change only 2nd x which has no effect on y variable.
Because id(x)!=id(y)
+ 3
Mirko Schultz
I'm also still learning.
This is just one of those things in Python.
What Python does when you say x=y its like it creates a tag with y written on it that it attaches to the basket that contains the contents of x. ( the basket now has 2 lables x and y). So when you change the items in the basket labled y, that same basket also has the lable x. So x also changes. But when you say x=x+[9] it creates a new basket that is a copy of the old and adds 9 to it, takes the x lable off the old basket attaches it to the new basket.
+ 1
+ 1
Louis
So setting x=y means both point to the exact same list, like references/pointers in other languages (I use(d) C++, Java & C# for many many years). I was just surprised because adding a number at the end really creates a new list instead of just adding a number. Thanks for your help.
+ 1
Mirko Schultz
Yep
0
You are setting y to x. x is [1,2,3,4,5]. Then you are changing x after you set y. So y is still [1,2,3,4,5] but now x is [1,2,3,4,5,3]. You need to move y under x=x+3. It should look like this:
x=[1,2,3,4,5]
x=x+[3]
y=x
0
Louis, I am new to Python and have a question about your program. When you set y to x they point to the same list, when y [1] changes it affects y and x but when y gets a new number at the end y becomes a new list so x and y are different lists. Is that right?