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:
- t = ()
- Correct! This is one way to create a tuple.
- t = tuple()
- Correct! This is one way to create a tuple.
- t = tup()
- Incorrect! This is a syntax error. Try again.
- t = 'a', 'b', 'c', 'd'
- Correct! This is one way to create a tuple.
11-9-5: Which of these lines of code correctly creates a tuple? (select all answers)
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.
- t['e ']
- Incorrect! The bracket operator takes the index of a value as its parameter, not the value itself. Try again.
- t[3]
- Correct! The index 3 grabs the fourth item in tuple t.
- t[4]
- Incorrect! Remember, indices start at 0, not 1. Try again.
11-9-9: Which line of code correctly grabs the fourth element of tuple t?
t = ('Ep', 'is', 'od', 'e ', 'III')
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.