[Tutor] Tuple - Immutable ?
Steven D'Aprano
steve at pearwood.info
Thu Mar 8 12:21:50 CET 2012
Sudip Bhattacharya wrote:
>>>> s=(1,2,3)
>>>> s=s+(4,5,6)
>>>> s
> (1,2,3,4,5,6)
>
> The tuple has changed.
No it hasn't. You have created a *new* tuple, and assigned it to the same
name. Consider:
py> s = (1, 2, 3)
py> id(s)
3083421332
py> t = s
py> id(t)
3083421332
This shows that both s and t are names for the same tuple, with ID 3083421332.
Now watch when we use += on s:
py> s += (4, 5)
py> id(s)
3083534812
py> id(t)
3083421332
py> t
(1, 2, 3)
The ID of s has changed, but t stays the same. So the original tuple remains
untouched, and a new tuple is created.
If you do the same thing with lists, you will see that because lists are
mutable, it does *not* create a new list, but changes the original in place:
py> a = [1, 2, 3]
py> b = a
py> a += [4, 5]
py> b
[1, 2, 3, 4, 5]
--
Steven
More information about the Tutor
mailing list