Pythonのタプル(tuple)とは?リストとの違いと使い分け
生徒
「Pythonのリストはわかったんですが、タプルっていうのもあるって聞きました。何が違うんですか?」
先生
「いい質問ですね。Pythonにはtuple
(タプル)というデータ型もあります。リストに似ているけれど、違う特徴を持っていますよ。」
生徒
「具体的にどんな場面で使い分けるんですか?」
先生
「それでは、Pythonのタプルについて、リストとの違いや使いどころを詳しく解説していきましょう!」
1. Pythonのタプル(tuple)とは?
Pythonのタプル(tuple)とは、複数のデータを1つにまとめて管理するためのデータ型です。見た目や使い方はリスト(list
)に似ていますが、タプルは一度作ったら中身を変更できないという特徴があります。
Pythonでは、タプルを丸かっこ ()
を使って作ります。
colors = ("赤", "青", "緑")
このように書くと、colors
という名前のタプルに、3つの色がまとめられます。
2. リストとの違いは「変更できるかどうか」
Pythonのリスト(list)は変更できるのに対して、タプル(tuple)は変更できません。
リストなら、あとから値を追加したり削除したりできますが、タプルはそれができません。
colors = ("赤", "青", "緑")
colors[0] = "黄色" # これはエラーになります
TypeError: 'tuple' object does not support item assignment
このように、タプルの中身を書き換えようとするとエラーになります。
3. タプルを使うメリットとは?
「変更できないのなら、なんでわざわざタプルを使うの?」と思うかもしれません。実はそれこそがタプルの強みなんです。
- 中身が変わらないとわかっている → 安全に扱える
- 誤って変更するミスを防げる
- 辞書(dictionary)のキーとして使える
たとえば、「身長と体重」のようなペアで、固定された情報を表すときにタプルが向いています。
4. タプルの作り方と使い方の基本
Pythonのタプルを作るには、()
を使いますが、1つだけのデータを入れるときは注意が必要です。
num = (5)
print(type(num))
<class 'int'>
これはタプルではなく、ただの数字になってしまいます。1つだけ入れるときは、最後にカンマ ,
をつける必要があります。
num = (5,)
print(type(num))
<class 'tuple'>
5. タプルの中身を取り出す(インデックス)
リストと同じように、タプルでも[]
を使って中身を取り出すことができます。
colors = ("赤", "青", "緑")
print(colors[1])
青
インデックスはリストと同じく0からスタートします。
6. タプルとリストの変換方法
タプルは変更できないので、どうしても中身を変えたいときは、一度リストに変換してから操作します。
colors = ("赤", "青", "緑")
colors_list = list(colors)
colors_list.append("黄色")
colors = tuple(colors_list)
print(colors)
('赤', '青', '緑', '黄色')
このように、一時的にリストに変えてから、最後にまたタプルに戻すことで変更が可能になります。
7. 複数の変数に一気に代入する「タプルのアンパック」
Pythonでは、タプルを使って複数の変数に一気に値を代入する便利な書き方があります。これをアンパック(unpack)と呼びます。
point = (10, 20)
x, y = point
print(x)
print(y)
10
20
このように、x, y = point
と書くと、それぞれの変数に順番に値が入ります。
8. タプルを使う場面の例
Pythonでタプルを使うよくある場面としては、次のようなものがあります。
- 関数の戻り値を複数返したいとき
- 変更されると困る設定データを扱うとき
- 座標(X, Y)や範囲(開始値, 終了値)のような固定ペアを扱うとき
たとえば、関数で身長と体重を返す例:
def get_profile():
return (170, 65)
height, weight = get_profile()
print(height, weight)
170 65
このようにタプルを使うことで、データのまとまりを分かりやすく、安全に扱うことができます。