# 11.1. Tuples are Immutable¶

A tuple is a sequence of values much like a list. The values stored in a tuple can be any type, and they are indexed by integers. The important difference is that tuples are immutable. Tuples are also comparable and hashable so we can sort lists of them and use tuples as key values in Python dictionaries.

Fun fact: The word “tuple” comes from the names given to sequences of numbers of varying lengths: single, double, triple, quadruple, quintuple, sextuple, septuple, etc.

Syntactically, a tuple is a comma-separated list of values:

t = 'a', 'b', 'c', 'd', 'e'


Although it is not necessary, it is common to enclose tuples in parentheses to help us quickly identify tuples when we look at Python code:

t = ('a', 'b', 'c', 'd', 'e')


To create a tuple with a single element, you have to include the final comma:

Without the comma Python treats ('a') as an expression with a string in parentheses that evaluates to a string:

If you want to create an empty tuple, you don’t need to include a comma:

Another way to construct a tuple is the built-in function tuple. With no argument, it creates an empty tuple:

If the argument is a sequence (string, list, or tuple), the result of the call to tuple is a tuple with the elements of the sequence:

Because tuple is the name of a constructor, you should avoid using it as a variable name.

Most list operators also work on tuples. The bracket operator indexes an element:

And the slice operator selects a range of elements.

But if you try to modify one of the elements of the tuple, you get an error:

You can’t modify the elements of a tuple, but you can replace one tuple with another:

Write code that replaces the third and sixth elements of tuple t with their capitalized versions.