バックナンバー
- Python初心者が「Python文法詳解」を読んだメモ #1
- Python初心者が「Python文法詳解」を読んだメモ #2
- Python初心者が「Python文法詳解」を読んだメモ #3
- Python初心者が「Python文法詳解」を読んだメモ #4
- Python初心者が「Python文法詳解」を読んだメモ #5
- Python初心者が「Python文法詳解」を読んだメモ #6
タプル
- どんなオブジェクトでも自由に登録可能
- リストと似ているが、更新不能(作成後の要素追加・削除などはできない)
- 要素は他のオブジェクトへの参照
- 当然シーケンスオブジェクトなので、添字やスライスでの要素取り出しが可能。
タプル
# 基本の書き方はリストと同じ。
t = (1, 2, 3)
t = ()
t = (1, 'Two', [3, 4])
# タプルリテラルの()は省略可能(ただし空タプルの場合は必須)
>>> t = (1, 2, 3) # これは
>>> t
(1, 2, 3)
>>> t = None
>>> t
>>> t = 1, 2, 3 # こう書ける
>>> t
(1, 2, 3)
>>> t = 1, # 一つの整数値からなるタプル
>>> t
(1,)
タプルを利用した2変数値の入れ替え
# CやJavaだと一時保存の変数が必要になるが、Pythonだとこんな感じでできる
>>> a = 1
>>> b = 2
>>> b, a = a, b # b, a = (a, b)
>>> a
2
>>> b
1
タプルのメソッド
# 引数と等しい値の要素数を取得
>>> t = (1, 2, 1)
>>> t.count(1)
2
# 引数と等しい値の要素を検索して最初に一致した要素のインデックスを返す
>>> A = (3, 4, 5, 3, 4, 5)
>>> A.index(4)
1
リストとタプルの位置付け・使い分け
- 更新不能シーケンス(つまりタプル)は、辞書のキーや集合の要素として使用できるというメリットがある。
- リストの要素はそれぞれが独立したデータ(例えば、「ユーザ名のリスト」「売上金額のリスト」など)で、
決まったデータのリストとして作成するのが一般的。 (RDBだったら列を入れるイメージ?) - タプルは、タプル全体でデータとして意味を持つ(要素単独では意味をなさない)ような場合に使われる。(RDBだったら行を入れるイメージ?)
- なので、タプルは配列というよりは構造体に近い使い方になる。
- タプルは固定長シーケンスであるためリストよりもメモリ利用効率が良い。上記方針を踏まえると、タプルで保持したいようなデータは性質上大量になるケースも珍しくないため、リストではなくタプルを適切に利用することで効率的なリソース利用やガベージコレクションの負荷軽減が期待できる。