[Tutor] Python oddity
jim stockford
jim at well.com
Thu Feb 28 02:57:20 CET 2008
i'm guessing this is the "post-it effect".
aa = range(0,10)
print aa
[0,1,2,3,4,5,6,7,8,9]
# what you've done is to use the range function to
# create the list of 0 to 9, then you associated the
# name aa to the list. a popular teaching analogy
# is that of putting a post-it that says aa on the list.
bb = aa
# now you've created another post-it that has bb
# written on it and put that post-it on the list.
bb[5] = 0
# you've told the interpreter "say, that list that has
# the post-it saying bb on it? well, dig into that list
# and change the value of the sixth member to be
# 0". the interpreter does it, not caring that there's
# also a post-it on the list that says aa.
print aa
[0,1,2,3,4,0,6,7,8,9]
print "hey! what happened to my aa list?!!!"
# in python, assignment is not a copy operation
# that makes a new thing-um. assignment creates
# a reference to an object, much like pasting a
# post-it onto the object. you can have lots of
# post-its tacked onto an object, it's still the same
# object (a rose by any other name...).
cc = bb
dd = cc
ee = aa
# now the one and only list is referenced by five
# different identifiers, aa, bb, cc, dd, and ee.
dd[4] = "john jacob jingleheimer schmidt"
print ee
[0,1,2,3,"john jacob jingleheimer schmidt",0,6,7,8,9]
On Feb 27, 2008, at 5:13 PM, Keith Suda-Cederquist wrote:
> Hi,
>
> I'm using iPython and I've run into an occasional problem that I don't
> understand. Here is what I'm seeing:
>
> >>aa=range(0,10)
> >>bb=aa
> >>print aa
> [0,1,2,3,4,5,6,7,8,9]
> >>print bb
> [0,1,2,3,4,5,6,7,8,9]
> >> # okay, everything allright at this point
> >>bb[5]=0 #change bb
> >>print aa
> [0,1,2,3,4,0,6,7,8,9] #aa has changed!!!
> >>print bb
> [0,1,2,3,4,0,6,7,8,9]
>
> So the problem is that when I change bb, aa also changes even though I
> don't want it to. Is this supposed to happen? If it is can someone
> explain to me why this is a good thing? and finally, can someone give
> me some advice on how to avoid or work-around this problem.
>
> Thanks,
> Keith
>
> Looking for last minute shopping deals? Find them fast with Yahoo!
> Search._______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
More information about the Tutor
mailing list