Python のタプル (Tuple)
Tuple とは?
Tuple (タプル) というのは、「複数のオブジェクトをひとつにまとめたもの」 ということができます。 タプルは ( ) で括って記述します。(ただし必須ではありません(後述))
例えば、次のように 'John' という文字列と 37 という数値をひとまとめにしたデータ(=タプル)を A に代入できます。
>>> A = ('John', 37)
>>> A
('John', 37)
タプル A を変数 x に代入してみましょう。
>>> x = A
>>> x
('John', 37)
すると確かに x もタプルとして、A と同じ値を持っています。
代入については、少し面白い動きをします。次のように二つの変数にタプル内のそれぞれの値を一度に代入可能です。
>>> a, b = A
>>> a
'John'
>>> b
37
以上のように、タプルは複数の値をひとつにまとめる働きをします。 C 言語等における構造体 (struct) のように考えると良いです。
前述したように、タプルを記述するときは ( ) を用いますが、 , 区切りでデータを並べることで、タプルとすることができます。
>>> A = 'John', 37 # 括弧を省略しても...
>>> A # タプルとして認識される。
('John', 37)
>>> A = 'John', # 文字列一個だけのタプルを作るなら、最後に , を付ければ OK
>>> A
('John',)
>>> A[0]
'John'
>>> A[1]
Traceback (most recent call last):
File "", line 1, in
IndexError: tuple index out of range
# 要素が一個しかないからエラーになった
ただし、コードを読むためにはこのことは知っておくべきですが、自分でコードを書くときは、 ( ) を付けたほうが意味がハッキリするので良いでしょう。
Tuple と List の違い
タプル内のデータにはインデックスでアクセスすることも可能です。
>>> A[0]
'John'
>>> A[1]
37
従って一見したところリストと同様に思われるかもしれません。
リストについては「Python の List」をみてください。
しかしながら、タプルは要素への値の代入はできません。
>>> A[0] = 'ABC' # 代入できない
Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment
比較のため、リストで同様のことをしてみましょう。
>>> A = ['John', 37] # こちらはリスト
>>> A[0]
'John'
>>> A[0] = 'ABC' # 代入できる
>>> A
['ABC', 37]
リストの場合は、タプルと違い一度定義した内容が変更されたことがわかります。