This is an old revision of the document!
Sequences can be explicitly/implicitly unpacked into discrete, ordered units of some type. Unpacking happens automatically using the ,
(comma). (The syntax is also used for Tuple construction.)
Unpacking works only in instances where the number of variables used exactly matches the number of items in the sequence.
In the below examples parenthesis are not required, and are included for clarity.
The most common application of unpacking is to (shallow) copy items into named variables.
Unpacking a List.
>>> seq = [1, 2, 3] >>> (a, b, c) = seq # a=1, b=2, c=3
Unpacking a Tuple.
>>> tup = ('a', 'b') >>> (x, y) = tup # x='a', y='b'
Unpacking the characters of a String.
>>> (fst, snd, thd) = "abc" # fst='a', snd='b', thd='c'
Swapping objects.
>>> x = 1 >>> y = 2 >>> (x, y) = (y, x) # x=2, y=1
The unary *
(star) operator is used to explicitly indicate unpacking, often outside the context of assignment.
This is commonly used when elements of a sequence are intended to be used as the parameters to a function.
E.g., (Assume that seq
contains 3 elements) fun(seq[0], seq[1], seq[2])
could be rephrased more tersely as fun(*seq)
.
>>> print([1, 2, 3]) # legal, but performs a cast str([1, 2, 3]) [1, 2, 3]
>>> print(*[1, 2, 3]) # as though we indexed each individually 1 2 3