Daily Python - Unpacking

Daily Python - Unpacking

By Maximus Meadowcroft | December 27, 2024


Python unpacking tips to level up how you use data structures.

Unpacking in Python lets you assign and manipulate parts of a list, tuple, string, or dictionary in a clean and Pythonic way.

Why?

Unpacking in Python simplifies your code, improves readability, and makes operations on data structures intuitive.

It’s especially powerful for:

  • Extracting elements without manually indexing

  • Working with variable-length data

  • Dynamically splitting or combining collections

Unpacking allows you to apply different algorithms to your code in a simpler safer way.

Assigning Variables to Parts of Lists

Imagine you have a list, and you want to assign the first element (head) to a variable and the rest (tail) to another. A traditional approach would be to manually index. But there are some problems with this:

  • It can cause errors.
  • It is less readable then using unpacking.

code segment

Like mentioned before, unpacking can help if you don't know the size of the list. With the traditional approach, if the list only contains one element, you will get an error if you try to assign the tail.

With unpacking, the tail is just assigned to an empty list:

code segment

With unpacking, you can assign more than just the head and tail if you want to. The * allows you to unpack all the remaining items into a variable at any point in the ordering.

Take this example for instance:

code segment

Assigning Variables to Parts of Dictionaries

Unpacking also works for dictionaries, assigning the variables to their keys for indexes. If you want to get the values as well, you could use these to iterate through the dictionary as needed.

code segment

Unpacking with Other Data Types

You can also unpack with strings or tuples. Anything that is iterable in python can be unpacked.

code segment

Unpacking to Pass Into a Function

Another use case for unpacking is to pass a list into a function as its arguments. You can store values for a function inside of a list then use the * syntax to unpack it as you pass it in.

This could allow you to store different arguments you want to call on a function in data structures.

Note also in the example how d allows the rest of the passed in arguments to be treated like a list (covered later).

code segment

What Happens When you Unpack?

When you unpack, all python is doing is separating the data structure into individual variables. Then when you are assigning something, it creates a data structure with all the parts as needed.

code segment

Unpacking to Pass a Dictionary into a Function

You can pass a dictionary into a function. This gives you the power to keep track of what variable is being passed in where.

Note in the example the swapping of the order of c and b.

code segment

Unpacking to Pass in Any Arguments Into a Function

The args and *kwargs syntax allows you to pass any number of positional or keyword arguments to a function.

Here's a practical use case:

code segment

Cons of Unpacking

Unpacking is powerful, but it’s not without its drawbacks:

  • Performance Impact: Unpacking creates new data structures when breaking down lists, tuples, or dictionaries, which can slightly impact speed in large-scale applications.
  • Potential Misuse: Using unpacking where it’s unnecessary can reduce readability and add confusion, especially for less experienced developers.
  • Error-Prone with Inconsistent Data: If the structure of your data doesn’t align with the unpacking pattern (e.g., fewer elements than expected), errors can occur unless handled carefully.

End

Follow me for more Python related content. If you are feeling generous you can also re-post this to help other people out as well.