Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Unpacking in Python: Extracting Values from Lists and Tuples | Mastering Packing and Unpacking in Python
Intermediate Python Techniques

book
Unpacking in Python: Extracting Values from Lists and Tuples

Unpacking is a powerful and versatile concept. This feature allows you to extract values from various iterable data structures, such as tuples, lists, dictionaries, ranges, and even strings. The opposite action is packing. Often, these two concepts are used together simultaneously. Let's break down the topic step by step.

First of all, let's compare unpacking and packing.

Python can both pack and unpack values from iterables in a single assignment. To perform packing, use the * iterable unpacking operator before the variable name.

# unpacking
a, b, c = (1, 2, 3) # a = 1, b = 2, c = 3
print(f"a = {a}, b = {b}, c = {c}")

# packing
a, b, *c = 1, 2, 3, 4, 5 # a = 1, b = 2, c = [3, 4, 5]
print(f"a = {a}, b = {b}, c = {c}")
1234567
# unpacking a, b, c = (1, 2, 3) # a = 1, b = 2, c = 3 print(f"a = {a}, b = {b}, c = {c}") # packing a, b, *c = 1, 2, 3, 4, 5 # a = 1, b = 2, c = [3, 4, 5] print(f"a = {a}, b = {b}, c = {c}")
copy

You will encounter errors if you attempt to unpack a different no of values than variables.

a, b = 1, 2, 3 # ValueError: too many values to unpack
a, b, c, d = 1, 2, 3 # ValueError: not enough values to unpack
12
a, b = 1, 2, 3 # ValueError: too many values to unpack a, b, c, d = 1, 2, 3 # ValueError: not enough values to unpack
copy

The value on the right side can be a tuple, list, generator, range, dictionary, set, or string. Let's explore each of these with examples.

Note

All values that are written in one line and separated by commas but without parentheses are one tuple. 1, 2, 3 same as (1, 2, 3)

The set is an unordered collection of data.

python
# string
a, b, c = "123" # a = "1", b = "2", c ="3"
# list
a, b, c = [1, 2, 3] # a = 1, b = 2, c = 3
# range
a, b, c = range(3) # a = 0, b = 1, c = 2
# set
a, b, c = {1, 2, 3} # a = 1, b = 2, c = 3
a, b, c = {3, 2, 1} # a = 1, b = 2, c = 3

# dict
dict_num = {"one": 1, "two": 2, "three": 3}
a, b, c = dict_num # a = "one", b = "two", c = "three"
a, b, c = dict_num.values() # a = 1, b = 2, c = 3
a, b, c = dict_num.items() # a = ("one", 1), b = ("two", 2), c = ("three", 3)

# assignment to the list
[a, b, c] = 1, 2, 3 # a = 1, b = 2, c = 3
[a, b, c] = "123" # a = "1", b = "2", c ="3"
Oppgave

Swipe to start coding

Let's practice a little bit.

  • There is a tuple and you need to unpack it as in the example above.

  • Use the name, age, career variables.

  • Print it out to see the result.

Løsning

my_tuple = ("Anna", 27, "Python Developer")

name, age, career = my_tuple

print(name, age, career)
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 1
my_tuple = ("Anna", 27, "Python Developer")

___, ___, ___ = ___

print(name, age, career)
toggle bottom row
some-alt