こんにちは、かつコーチです。
前回はリストの基本を解説しました。
今回は、リストとよく似た見た目を持つタプルについて解説します。
タプルとは、複数の値をまとめて格納できる、変更できないデータ構造のことです。
「リストがあるのに、なぜタプルが必要なの?」と最初は疑問に思う人も多いと思います。
私も学び始めのころ、この違いが分からずタプルを使うタイミングが分からないままでした。
この記事では、タプルの基本的な使い方と、リストとの使い分けの基準を整理していきます。
基本の書き方:タプルの作成と特徴
タプルを作成する
タプルは()(丸かっこ)を使って作成します。
point = (10, 20)
print(point)
# (10, 20)
要素が1つだけのタプルを作る場合は、末尾にカンマが必要です。
single = (5,)
print(type(single))
# <class 'tuple'>
not_tuple = (5)
print(type(not_tuple))
# <class 'int'>
(5)はただの数値の丸かっこ表記とみなされ、タプルにはなりません。
カンマを付け忘れると型が変わってしまうため、注意が必要です。
値の取り出し
要素の取り出し方はリストと同じで、インデックスを使います。
colors = ("red", "green", "blue")
print(colors[0])
# red
print(colors[-1])
# blue
複数の変数に一括で代入する「アンパック」もよく使われます。
x, y = point
print(x, y)
# 10 20
つまずきやすい設定・注意点:イミュータブル(変更不可)という特性
タプル最大の特徴は、イミュータブル(immutable)、つまり作成後に中身を変更できないという性質です。
colors = ("red", "green", "blue")
colors[0] = "yellow"
この特性を知らずに要素を書き換えようとすると、エラーになります。
よくあるつまずきポイント・エラー対処
タプルの要素を変更しようとしてエラーになる
❌ Before:リストと同じ感覚でタプルの要素を書き換える
私が初めてタプルを使ったとき、リストと同じ感覚で値を上書きしようとして、次のエラーに遭遇しました。
colors = ("red", "green", "blue")
colors[0] = "yellow"
print(colors)
TypeError: 'tuple' object does not support item assignment
「なぜリストのように書き換えられないのか」が理解できず、しばらく原因を調べた記憶があります。
✅ After:変更が必要ならリストを使う、またはタプルごと作り直す
タプルは仕様上、要素の変更ができません。
値を変えたい場合は、そもそもリストを使うのが正しい選択です。
colors = ["red", "green", "blue"]
colors[0] = "yellow"
print(colors)
# ['yellow', 'green', 'blue']
どうしてもタプルのまま扱いたい場合は、新しいタプルを作り直します。
colors = ("red", "green", "blue")
colors = ("yellow",) + colors[1:]
print(colors)
# ('yellow', 'green', 'blue')
この経験から、「値を変更する前提のデータはリスト、変更されたら困るデータはタプル」という基準で選ぶようになりました。
リストとタプルの使い分け
判断の基準
両者の違いを表にまとめると、次のようになります。
| 項目 | リスト | タプル |
|---|---|---|
| 記号 | [] | () |
| 変更 | 可能(ミュータブル) | 不可(イミュータブル) |
| 用途 | 増減・更新のあるデータ | 固定されたデータの組 |
| 処理速度 | やや遅い | やや速い |
タプルは変更できない分、内部処理が軽く、辞書のキーとしても使える利点があります。
locations = {
(35.6, 139.7): "東京",
(34.6, 135.5): "大阪",
}
print(locations[(35.6, 139.7)])
# 東京
リストは辞書のキーにできませんが、タプルはイミュータブルなのでキーとして使えます。
緯度経度や座標、RGB値など、「変わらない組み合わせ」を扱うときはタプルを選ぶとよいでしょう。
まとめ
この記事のポイント
- タプルは
()で作成し、作成後は要素を変更できない - 要素が1つのタプルには末尾にカンマが必要
- 要素を書き換えようとすると
TypeErrorになる - 変更が必要なデータはリスト、固定データはタプルを選ぶ
- タプルはイミュータブルなので辞書のキーとしても使える
次に読むべき記事
リストとタプルを理解したら、次はキーと値のペアでデータを管理する「辞書(dict)」を学んでいきましょう。
→ 次の記事:辞書(dict)の基本:キーと値の扱い方
タグ: Python, 初心者向け, 基本文法
