zefciu wrote: > Hello! > > Where can I find a good explanation when does an interpreter copy the > value, and when does it create the reference. I thought I understand > it, but I have just typed in following commands: > > >>>>a=[[1,2],[3,4]] >>>>b=a[1] >>>>b=[5,6] >>>>a > > [[1, 2], [3, 4]] > >>>>b > > [5, 6] > > And I don't understand it. I thought, that b will be a reference to a, > so changing b should change a as well. What do I do wrong. And a > second question - can I create a reference to element of a list of > floating points and use this reference to change that element? > > Greets to all PyFans > zefciu
Nope, b is a reference to the same object referenced by a[1], but only until you rebind it. Think of assignment (binding) as storing a pointer to an object in a name. So a = [[2,3],[3,4]] stores a pointer to a list in "a". The list itself holds two pointers to (otherwise anonymous) lists. Then b = a[1] make b point to the same object as a[1] does. At this point you could, for example, execute b[0] = 42 Then when you printed the value of "a" you would see [[1, 2], [42, 4]] and you would see [42, 4] as the value of b. But you don't do that, you next do b = [5, 6] This stores a reference to an entirely different new list in "b", with the results you observe. regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Love me, love my blog http://holdenweb.blogspot.com Recent Ramblings http://del.icio.us/steve.holden -- http://mail.python.org/mailman/listinfo/python-list