リストのアンパック代入(Python)

Pythonのリスト(Python)は、以下のようにアンパック代入できます。

values = [4, 5, 6]
x, y, z = values

このとき、xに4、yに5、zに6が代入されます。

アスタリスクを用いたアンパック代入

変数(Python)の数がリスト(Python)の要素数より少ない場合、アスタリスク(*)を使用して、複数の要素を一つの変数(Python)に収めることができます。

first, *middle, last = [1, 2, 3, 4, 5]

このとき、firstに1、middle[2, 3, 4]lastに5が代入されます。

一部の要素を捨てるアンパック代入

以下のアンパック代入を行うことでfirstに1、lastに5が代入されます。

first, _, _, _, last = [1, 2, 3, 4, 5]

ここで、_は変数(Python)であり、2, 3, 4の順番で_に代入され、最後の4が保持されます。

このとき、一部の要素を捨てる用にアンダースコア(_)を使っているのは慣習であり、別の変数名でも構いません。

入れ子のリストのアンパック代入

入れ子のリスト(Python)は、以下のようにアンパック代入できます。

nested_list = [1, [2, [3, 4]], 5]
a, (b, (c, d)), e = nested_list