Technology4 min read

Tuple unpacking in Python

Abhishek Ahlawat

By Abhishek Ahlawat โ€” Recently

Founder of StudyTonight and a MERN fullstack developer. Writes about JavaScript, web development, Linux, and tech.

Summarize this article using AI

We know what a tuple is and how it can be used in Python programs. In this post, we will understand the concept of tuple unpacking.

Tuple unpacking refers to breaking down the tuple with each data element of the tuple assigned to a variable. For example, if your tuple has 4 values stored in it, then you can provide a tuple of 4 variables in it, and use the tuple unpacking technique to unpack the tuple values and store them into the variables provided.

Whereas, Tuple packing basically means assigning multiple values into a single variable. In this case, we are packing multiple values into a single variable, which is a tuple.




Tuple packing and unpacking

Tuple packing is nothing but the creation of tuple, whereas tuple unpacking means to extract tuple values and store them in individual variables.

tuple_packing = ("StudyTonight", 'Technical website', 12)
# below line unpacks the data into separate variables
(name_of_website, type_of_website, no_of_characters) = tuple_packing
print(name_of_website)
print(type_of_website)
print(no_of_characters)

Output:

StudyTonight
Technical website
12

When a tuple is being unpacked, there are certain rules which must be adhered to. When a tuple is being packed, a certain number of values are provided to a single variable. The same number of values must be present during unpacking. If the number of values passed is either less or more, it results in a ValueError.

When the number of values passed during unpacking is more:

tuple_packing = ("StudyTonight", 'Technical website', 12)   
# below line unpacks the data into separate variables
(name_of_website, type_of_website, no_of_characters, location) = tuple_packing

Output:

ValueError: not enough values to unpack (expected 4, got 3)

When the number of values passed during unpacking is less:

tuple_packing = ("StudyTonight", 'Technical website', 12)   
# below line unpacks the data into separate variables
(name_of_website, type_of_website) = tuple_packing

Output:

ValueError: too many values to unpack (expected 2)



Passing a tuple as a parameter to a method:

Below is an example that demonstrates how tuple packing can be done and the variable assigned to it can be passed to a method. When this method is called, it unpacks the values present within the variable and uses them to perform required operations.

def calculate_power(x, y): 
    return pow(x, y) 

print("Passing variables as is")
print(calculate_power(10, 2)) # Calling method by passing normal variables

tuple_packing = (10, 2)
print("Passing packed values")   
# Calling method by packing the variables into a tuple 
# and calling it using the * operator
print (calculate_power(*tuple_packing))

Output:

Passing variables as is
100

Passing packed values
100

Note: The * operator is the unpacking operator in python, and it works with a tuple, list, etc data structures to unpack values stored in them. In the example above, we have a function calculate_power(x, y) which takes in two arguments, which we can provide using normal arguments or we can pass a tuple with 2 values, along with the unpacking operator *. If the tuple has more than 2 values in it, then we will get an error because the function expects only 2 values.


Tuple unpacking when the number of variables is varying:

We can use the * operator to assign multiple values to a single variable during tuple unpacking if the number of variables provided is less than the number of data elements present in the tuple. In the example below, we have used the * operator with n, m and once with s, to hold extra data as a list.

m, *n, s = (12, "study ", "Tonight", 'Technical') 
print(m) 
print(n) 
print(s) 
print("\n")  
*m, n, s = (12, "study ", "Tonight", 'Technical') 
print(m) 
print(n) 
print(s)
print("\n")  
m, n, *s = (12, "study ", "Tonight", 'Technical') 
print(m) 
print(n) 
print(s)

Output:

12
['study ', 'Tonight']
Technical

[12, 'study ']
Tonight
Technical

12
study 
['Tonight', 'Technical']



Conclusion

In this post, we understood how tuples can be packed and unpacked for various purposes. Don't forget to run the code on your IDE with different data and check how it works.

Spotted something outdated or wrong?

Liked this? See more StudyTonight posts in Google results.

Add StudyTonight as a preferred source
Next questLIVE OPSStep 2 / 3

Practice real incidents in the browser

System Design Ops โ€” put out fires, ship fixes, and stack XP. Reading done. Time to play.

Play System Design
  • +XP

    Every sim

  • Incidents

    Live ops

  • Ranks

    Climb up

Read next