バリケンのPython日記 RSSフィード

2008-07-24

[] タプル(3)  タプル(3) - バリケンのPython日記 を含むブックマーク はてなブックマーク -  タプル(3) - バリケンのPython日記  タプル(3) - バリケンのPython日記 のブックマークコメント

タプルのパック

複数の値からタプルを生成することを「タプルのパック」と呼ぶみたい。次の例では「12345」「54321」「'hello!'」という3つの値が一つのタプルにパックされた、ということだね。

>>> t = 12345, 54321, 'hello!'
>>> t
(12345, 54321, 'hello!')
>>>

シーケンスのアンパック

逆に、タプルから複数の値を生成することを「タプルのアンパック」と呼ぶみたい。タプル以外の(リストや文字列などの)シーケンスも同様にアンパックできるから、「シーケンスのアンパック」と呼んだほうが一般的かも。

次の例ではタプル、リスト、文字列をアンパックしているよ。シーケンスのアンパックは、左辺に列挙されている変数が、右辺のシーケンスの長さと同じである必要があるよ。

>>> t = 12345, 54321, 'hello!'
>>> t
(12345, 54321, 'hello!')
>>> x, y, z = t
>>> x
12345
>>> y
54321
>>> z
'hello!'
>>> a, b, c = "abc"
>>> a
'a'
>>> b
'b'
>>> c
'c'
>>> l = [1, "two", 3]
>>> l
[1, 'two', 3]
>>> d, e, f = l
>>> d
1
>>> e
'two'
>>> f
3
>>> 

以前も出てきた「複数変数への同時代入」は、実は「タプルのパック」と「シーケンスのアンパック」を組み合わせたものなんだね。

>>> x, y, z = 1, 2, 3
>>> x
1
>>> y
2
>>> z
3
>>>