リストやタプルの unpack

この記事は Python Tips Advent Calendar 2012 12日目の記事です。


Python のリストやタプルは、展開した上で代入といったことができます。

>>> a, (b, c), d = [(1, 2), (3, 4), (5, 6)]
>>> print a
(1, 2)
>>> print b
3
>>> print c
4
>>> print d
(5, 6)

更に、関数定義時に展開して代入するという指定もできます。

>>> def f((a, b), (c, d)):
...     print a, b, c, d
>>> f((1, 2), (3, 4))
1 2 3 4


Python3 なら、リストやタプルの一部だけ取ってくることも可能です。

>>> first, second, *rest, last = (1, 2, 3, 4, 5, 6, 7, 8)
>>> print first
1
>>> print second
2
>>> print rest
[3, 4, 5, 6, 7]
>>> print last
8


.