Tuples
Learn how tuples work in Python.
We'll cover the following
This lesson explains the concepts of tuples, which are mostly overlooked when programming in Python.
Introduction
A tuple is another container sequence offered by the standard Python 3 library. It is an immutable sequence.
Explanation
Keeping the records
A tuple isn’t just an immutable list. It also serves another ulterior motive, i.e., we can also use tuples for the record-keeping purpose. It’s simple but mostly overlooked. So we’ll cover it in this section.
Presuming you know the basics of a tuple and its syntax, look at the following tuples:
day = ('Monday', 1)
name, color, weight = ('banana', 'yellow', 10)
The above tuples hold data in them as follows:
day
: Holds data about Monday, where the value 1 means it’s the first day of the week.name, color, weight
: Holds data about a fruit e.g., a banana.
Unpacking the tuples
Retrieving the items separately from a tuple is known as unpacking a tuple. The above parallel assignment name, color, weight = ('banana', 'yellow', 10)
is the most simple example of unpacking a tuple. In case we have a list of tuples, a for
loop serves the purpose of unpacking them.
Run the following program to see how to unpack a tuple with a for
loop.
fruits = [('banana', 'yellow', 10), ('apple', 'red', 19)]# Unpacking the tuple with a for loopfor name, _, _ in fruits:print(name)
In the code above, you can see (at line 4) that we overlooked the last two items of every tuple present in fruits
, using a dummy variable _
. That is because we only needed to print the name
at line 5. In case you want to retrieve all the fields, try replacing _
with the variables, and print them in the next line.
You may be surprised to know that you can unpack a tuple without even using an assignment statement or a for
loop. You can unpack a tuple using a *
operator. This functionality is mostly used when passing a tuple’s values as arguments to a function.
Run the following program.
# Function returning the sum of its argumentsdef add(a, b):return a+bnumbers = (1, 2)result = add (*numbers) # Unpacking numbers with * : add(1,2)print(result)
In the code above (at line 2), you can see a function add
that takes two parameters a
and b
and returns their sum. Now, we have a tuple numbers
at line 5. Instead of utilizing a few lines of code to get the values from numbers
, we simply pass *numbers
as a parameter when calling the add
function at line 6.
This *
operator makes it possible to unpack a tuple and call a function within the same line, making the program more readable and efficient.
Be careful when unpacking a nested tuple with *
. For example, if you have the following nested tuple:
nested = (1, 2, (4, 5))
Unpacking with *
will give three values: 1
, 2
, and (4, 5)
. An important thing to note is that the inner tuple doesn’t break. You’ll need to unpack it one more time to get 4
and 5
separately.
❌ Note: Python 3 doesn’t assist in sending a nested tuple as a parameter to the function, unlike the versions before Python 3. So doing anything like:
def my_function(a, b, (c, d))
will give an error. For more details, follow this link.