変数 では、代入文を使って、変数に値を代入する方法を解説しました。
普通の代入文は、右辺の値を、左辺に指定した変数に代入します。
In [52]:
variable = 1000 # variableに 1000 を代入
print(variable)
右辺が、リストオブジェクトなどの コレクション であっても同じです。
In [54]:
variable = [1, 2, 3] # variable にリストを代入
print(variable)
コレクションのアンパック代入¶
代入式の右辺がコレクションなどの場合、左辺に複数の変数名を指定して、コレクションの要素を一括して変数に代入できます。
たとえば、右辺が [1, 2, 3]
のように、要素が3つあるリストの場合、左辺に (var1, var2, var3)
と3つの変数名を指定できます。
In [56]:
list_obj = [1, 2, 3]
var1, var2, var3 = list_obj # var1, var2, var3 に、list_objの要素を順に代入
print(var1, var2, var3)
このように記述すると、変数 var1
、var2
、var3
には、右辺のリストオブジェクトの要素が一つずつ順番に代入されます。この場合、var1
には list_obj
の最初の要素である 1
が、var2
、var3
には、それぞれ2番目と3番目になる 2
と 3
が代入されます。
このように、コレクションの要素を一括して変数に代入する方法を、アンパック(unpack) といいます。
右辺には、リストオブジェクト以外にタプルなどのコレクションも指定できます。
In [57]:
var1, var2, var3 = (1, 2, 3) # タプルのアンパック
print(var1, var2, var3)
文字列を代入すると、1文字ずつ分割して代入されます。
In [60]:
var1, var2, var3 = "ABC" # 文字列のアンパック
print(var1, var2, var3)
アンパック代入を行う場合は、右辺のコレクションの要素数と、左辺に指定する変数の数が一致する必要があります。一致しない場合は、次のようなエラーになります。
In [61]:
var1, var2 = "ABC" # 文字列のアンパック
print(var1, var2)
この例では、長さが3の文字列を、var1
と var2
という2つの変数に代入しようとしていますが、文字が一つ余ってしまうためにエラーとなります。
In [65]:
ningyocho = (35.686321, 139.782211) # (緯度, 経度) のタプル
ido = ningyocho[0] # ningyocho から緯度を取り出す
keido = ningyocho[1] # ningyocho から経度を取り出す
print("人形町は緯度:", ido, "経度:", keido)
この書き方でも間違いではないのですが、2行にわけてそれぞれ緯度と経度を取り出すのは、ちょっとまだるっこしい感じがしませんか?
このような場合、アンパックを使うと、
In [ ]:
ningyocho = (35.686321, 139.782211) # (緯度, 経度) のタプル
ido, keido = ningyocho # ningyocho から緯度と経度を取り出す
print("人形町は緯度:", ido, "経度:", keido)
のように、一行ですっきりと記述出ます。