3.3. タプルの紹介

タプルは変更不可能 (不変) なリストです. タプルはいったん作られたら, どんな方法でも変更されません.

Example 3.15. タプルの定義

>>> t = ("a", "b", "mpilgrim", "z", "example") 1
>>> t
('a', 'b', 'mpilgrim', 'z', 'example')
>>> t[0]                                       2
'a'
>>> t[-1]                                      3
'example'
>>> t[1:3]                                     4
('b', 'mpilgrim')
1 タプルは, 角括弧ではなく丸括弧で要素を括るという点を除いて, リストと同じ方法で定義されます.
2 タプルの要素には, リストと同じように順序が定義されます. リストと同じくタプルも 0-起点で, 空でないタプルの最初の要素は常に t[0] です.
3 負のインデックスは, リストと同じように, タプルの末尾からカウントします.
4 スライシングもリストと同様です. リストをスライスしたときは, 新しいリストが返ってくるし, タプルをスライスしたときも, 新しいタプルが返ってくることに注意してください.

Example 3.16. タプルはメソッドを持たない

(訳注. Python 2.5 まではタプルにメソッドが無いのですが, Python 3.0 およびそのバックポートである Python 2.6 以降では indexcount というメソッドが追加されています.)

>>> t
('a', 'b', 'mpilgrim', 'z', 'example')
>>> t.append("new")    1
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'append'
>>> t.remove("z")      2
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'remove'
>>> t.index("example") 3
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'index'
>>> "z" in t           4
True
1 タプルに要素を追加することはできません. タプルには appendextend はありません.
2 タプルから要素を削除することはできません. タプルには removepop はありません.
3 タプルの要素を検索することはできません. タプルには index はありません.
4 しかし, 要素がタプルに含まれているかどうかは, in を使えば分かります.

ならばタプルの良いところは何であろうか?

Note
タプルはリストへ変換することができ, その逆も可能です. 組み込みの tuple 関数はリストを 1 つ引数に取り, 同じ要素を持つタプルを返します. そして list 関数はタプルを 1 つ引数に取りリストを返します. つまり効果としては, tuple はリストを冷凍し, list はタプルを解凍します.

タプルについてさらに知るには