Why Equal Integers Behaves Differently To Equal Lists?
This question is more a curiosity than anything else. I've been reading the details of the implementation of the int object in Python (1 and 2) and, as far as I can see, a Python
Solution 1:
You are not modifying the original integer, you are creating a new one and assigning the variable to it, and so the id
is different.
a = 5
b = a
b += 1 # created a new intprintid(a), id(b) # different
is the same as
a = 5
b = a
b = b + 1 # created a new intprintid(a), id(b) # different
The list
equivalent would not be to use append
, but to use +
:
a = [5]
b = a
b = b + [6] # created a new listprintid(a), id(b) # different
The is no equivalent append
for int
s, since int
s cannot be modified but list
s can.
The only potentially confusing thing is
a = [5]
b = a
b += [1]
printid(a), id(b) # same
The reason is that the +=
operator (unfortunately, IMO) modifies the original list, so b += [1]
and b = b + [1]
are not equivalent statements. (See Why does += behave unexpectedly on lists?)
Post a Comment for "Why Equal Integers Behaves Differently To Equal Lists?"