Skip to content Skip to sidebar Skip to footer

How Is A Tuple Immutable If You Can Add To It (a += (3,4))

>>> a = (1,2) >>> a += (3,4) >>> a (1, 2, 3, 4) >>> and with a list: >>> b = [1,2] >>> b += [3,4] >>> b [1, 2, 3, 4

Solution 1:

In the example, you're not changing the actual tuple, you're only changing the tuple that the variable a is pointing to. In this example a += (3, 4) is the same as a = a + (3, 4). If we check the id of a before and after the operation, we can see the difference:

>>> a = (1, 2)
>>> id(a)
60516360
>>> a += (3, 4)
>>> id(a)
61179528

With lists, += calls .extend() on the list, which changes it in-place.

>>> b = [1, 2]
>>> id(b)
62480328
>>> b += [3, 4]
>>> id(b)
62480328

Notice that the id of b doesn't change after the operation.


Solution 2:

Tuple is of immutable type, means that you cannot change the values stored in the variable a. For example, doing the following

>>> a = (1, 2)
>>> a[0] = 3

throws up the error TypeError: 'tuple' object does not support item assignment.

On the other hand, for a list,

>>> a = [1, 2]
>>> a[0] = 3

this is perfectly valid because it is mutable.

What you are doing is reassigning values to the variable names.

a = a + (3, 4) which just concatenates the two and reassigns it to the variable a. You are not actually changing the value of the tuple.

For example, string is immutable, and hence,

>>> name = "Foo"
>>> name[0] ='o' 

throws up a similar error as above. But, the following is a reassignment and completely valid.

>>> name = name + " Bar"
>>> name
'Foo Bar'

and it just does a concatenation.


Post a Comment for "How Is A Tuple Immutable If You Can Add To It (a += (3,4))"