I have the following simple code:
r = {}
r[1] = [0.000000]
r_new = {}
print r[1][0]
r_new[1] = r[1]
r_new[1][0] = r[1][0] + 0.02
print r[1][0]
It outputs:
0.0
0.02
it is something strange to me since in the first and second case I
output the same variable (r[1][0]) and it the two cases it has
different values (in spite on the fact, that between the 2 outputs I
did not assign a new value to the variable).
Can anybody pleas explain me this strange behavior?
You're referencing into a single mutable object (a list):
a = [1,2,3]
b = a
b[1] = 4
print a
both r[1] and r_new[1] refer to the same list object, so when the
contents of that single list object is changed ("r_new[1][0] =
...") accessing it by either name ("r[1][0]" or "r_new[1][0]")
returns the same list.
To create a new list in r_new, use
r_new[1] = r[1][:] # copy the contents of the list
-tkc
--
http://mail.python.org/mailman/listinfo/python-list