Introduction
For many years, unpacking was referred to as tuple unpacking even though it is applicable to other iterables such as list, tuple, string, range, etc. Even today, many still think unpacking is related to tuples.
So the goal of this article is to go through what is unpacking in Python, different ways of unpacking. Along the way, you will understand that not only tuples but list, sets, dictionaries etc. can also be used for unpacking.
Unpacking
The process of splitting the packed values into individual elements is called ‘unpacking
’. The packed values are strings, lists, tuples, sets, and dictionaries
.
During the unpacking elements from RHS
(Right Hand Side) are split into its relative position on the LHS
(Left Hand Side). We will see how this works in the following examples.
As we can see from the below two examples, elements from RHS
are unpacked into the variables on LHS
based on the relative position.
Example 1: Using list, tuple & string
Example 2: Using sets and dictionaries
Since sets
& dictionaries
are unordered collection of elements it is not guaranteed that unpacking will give the same results every time unlike strings, lists, and tuples which are an ordered collection of elements. Note that for dictionary
type, unpacking is done on keys.
Tip: Since sets & dictionaries are an unordered collection of elements, it is not recommended to use them for unpacking as there is no guarantee on the order of the results.
Extended iterable unpacking
The extended iterable unpacking is done via the operators * and **.
* Operator
Sometimes we don’t want to unpack all the elements. We might be interested in unpacking only the first element or the last element and put rest of the elements into a variable. This can be achieved with the help of * operator.
Note: * operator can only be used once on the LHS of assignment operator unless it is used in nested unpacking.
Example 3: Using list, tuple, string
Example 4: Using sets and dictionaries
** Operator
As you have noticed from the above examples, * operator iterates through the keys in the dictionary. If we would like to iterate through key-value
pairs, then we must use ** operator
.
Note: ** operator can not be used on the LHS of assignment operator.
Example 5: Using dictionaries
As you can see from the below example, all the key-value pairs are used for unpacking using ** operator.
In this example, the ‘k4’ appears both in d2 and d3. In such cases, the latest key and its value is considered for the final results after unpacking.
Nested unpacking
The same concepts we just went through for unpacking and extended unpacking applies to nested unpacking as well. The only difference is as the name suggests — it’s nested. Let’s look at the examples:
Example 6: Using list, tuple & string
Conclusion
In this article, you have understood about unpacking, extended iterable unpacking and nested unpacking with examples. If you have any questions, please let me know in the comments section and I will try to get back you as soon as I can.
References
Originally published at Medium on 5-Sep-2020.