Tuples
------
:ref:`sec-lists` allow storage of items that can change over time. However,
sometimes the developer requires a list that remains constant over time.
`Python `_ defines *tuples* to accommodate this need,
and this is also the reason why tuples are faster than lists.
Objects that remain constant over time are referred to as *immutable* in `Python `_.
Thus, a tuple can be defined as an *immutable list*. In terms of code, a tuple
looks just like a list except the square brackets are replaced by
parentheses. For example: ::
>>> a = (100,20,'a')
>>> print a[0]
100
>>> print a[2]
'a'
>>> a[2] = 9
Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment
As shown above, the individual elements can be accessed by specifying the element index within square brackets, exactly as lists. Note how `Python `_
reports an error whenever an attempt is made to alter the value of an element. While the elements within a tuple cannot be changed, the variable holding the tuple can *always*
be assigned a new tuple, as shown below: ::
>>> a = (100,20,'a')
>>> a = (0,1,2,3,4)
>>> a
(0, 1, 2, 3, 4)