Code snippets are used to demonstrate Python unpacking. Carefully selected code snippets can replace the many words used in an explanation.
It is assumed that the reader is familiar with Python lists, dictionaries and tuples.
Example 1.A: multiple assignment using a list
Code
a, b, c = [1, 2, 3]print('Example 1.A')print(f"a = {a}")
print(f"b = {b}")
Output of Code
Example 1.Ab = 2
Example 1.B: multiple assignment using any iterable
Code
a, b, c = (1, 2, 3)print('Example 1.B')print(f"a = {a}")
print(f"b = {b}")
Output of Code
Example 1.Bb = 2
Example 1.C: multiple assignment using a dictionary
Code
x, y = {'b': 2, 'c': 3}print('Example 1.C')print(f"x = {x}")
print(f"y = {y}")
Output of Code
Example 1.Cy = c
Single Asterisk (*)
Example 2.A: using single asterisk to unpack a list into the last assignment variable
Code
a, *b = [1, 2, 3] print('Example 2.A') print(f"a = {a}") print(f"b = {b}") print(f"b[0] = {b[0]}") print(f"b[1] = {b[1]}")
Output of Code
Example 2.A a = 1 b = [2, 3] b[0] = 2 b[1] = 3
Example 2.B: using single asterisk to unpack a list into the middle assignment variable
Code
a, *b, c = [1, 2, 3, 4] print('Example 2.B') print(f"a = {a}")
print(f"b = {b}") print(f"b[0] = {b[0]}") print(f"b[1] = {b[1]}")
print(f"c = {c}")
Output of Code
Example 2.B a = 1 b = [2, 3] b[0] = 2 b[1] = 3
c = 4
Example 3: using single asterisk for unpacking a list into positional arguments of a function (*args)
Code
def print_d(a, b, c): print(f"a = {a}") print(f"b = {b}") print(f"c = {c}") d = (1, 2, 3) print('Example 3') print_d(*d)
Output of Code
Example 3 a = 1 b = 2 c = 3
Example 4: multiple assignment using a dictionary
For the details on the items() method of a dictionary, click here.
Code
d = {'a': 1, 'b': 2, 'c': 3} x, y, z = d.items() print('Example 4') print(f"x = {x}") print(f"x[0] = {x[0]}") print(f"x[1] = {x[1]}") print(f"y = {y}") print(f"z = {z}")
Output of Code
Example 4 x = ('a', 1) x[0] = a x[1] = 1 y = ('b', 2) z = ('c', 3)
Double Asterisk (**)
Example 5: double asterisk for unpacking the dictionary into keyword arguments that match the function parameters(**kwargs)
Code
def print_d(a, b, c): print(f"a = {a}") print(f"b = {b}") print(f"c = {c}") d = {'a': 1, 'b': 2, 'c': 3} print('Example 5') print_d(**d)
Output of Code
Example 5 a = 1 b = 2 c = 3
Example 6.A: double asterisk for unpacking dictionaries in order to merge them
Code
d_1 = {'a': 1, 'b': 2} d_2 = {'c': 3, 'd': 4 } merged_dict = {**d_1, **d_2} print('Example 6.A') print(f"merged_dict = {merged_dict}")
Output of Code
Example 6.Amerged_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
Example 6.B: double asterisk for unpacking dictionaries in order to merge them and override as needed
Code
d_1 = {'a': 1, 'b': 2} d_2 = {'b': 99, 'c': 3, 'd': 4 } merged_dict = {**d_1, **d_2} print('Example 6.B') print(f"merged_dict = {merged_dict}")
Output of Code
Example 6.Bmerged_dict = {'a': 1, 'b': 99, 'c': 3, 'd': 4}
Note
The above is used to demonstrate dictionary unpacking. The more Pythonic way to merge dictionaries is to use the vertical bar (|) operator.
merged_dict = d_1 | d_2
Intersting use of Python knowing what you are trying to do and just doing it. I like Python for its simplicity and good support with imports that can provide code that I won't need to write myself. While I haven't used Pointers much in Python myself, having them available could be useful. You should explore using a heap for a priority queue. There are a lot of interesting data structures that you can code and use. Even if most modern programming languages provide implementations for those data structures.
ReplyDeleteThanks for sharing!
ReplyDeleteThanks for sharing! The examples made Python's unpacking feature clear and approachable. I found the explanation of how to use asterisks for unpacking lists and dictionaries particularly useful. Looking forward to more quick code examples like this!
ReplyDeleteAlex Becker.
kalmanfilter.net
Another good post =]
ReplyDelete