Unpacking Tuples
When creating a tuple, we often assign values to it, a process known as “packing” a tuple:
books = ("1984", "Brave New World", "Fahrenheit 451")
In Python, it’s also possible to extract these values back into separate variables, a process known as “unpacking”:
Basic Unpacking
Here’s how you can unpack a tuple into individual variables:
books = ("1984", "Brave New World", "Fahrenheit 451") (dystopian, futuristic, classic) = books print(dystopian) # Output: 1984 print(futuristic) # Output: Brave New World print(classic) # Output: Fahrenheit 451
Note: The number of variables must exactly match the number of values in the tuple. If they do not match, use an asterisk (*) to collect the excess values into a list.
Using the Asterisk (*) for Flexible Unpacking
If you have more values than variables, you can use an asterisk (*) to capture the remaining values into a list:
books = ("1984", "Brave New World", "Fahrenheit 451", "The Handmaid's Tale", "The Road") (dystopian, futuristic, *others) = books print(dystopian) # Output: 1984 print(futuristic) # Output: Brave New World print(others) # Output: ['Fahrenheit 451', 'The Handmaid's Tale', 'The Road']
If the asterisk is placed in a position other than the last variable, Python will collect values into that variable until the remaining variables have the same number of values:
books = ("1984", "Brave New World", "Fahrenheit 451", "The Handmaid's Tale", "The Road") (dystopian, *others, classic) = books print(dystopian) # Output: 1984 print(others) # Output: ['Brave New World', 'Fahrenheit 451', 'The Handmaid's Tale'] print(classic) # Output: The Road