Pythonのタプルとは?リストとの違いと基本的な使い方を解説
生徒
「Pythonでリストみたいだけど変更できない“タプル”ってありますか?」
先生
「はい、tupleというデータ型で、リストと似ていますが、値を変えられない特徴があります。」
生徒
「リストとの違いや、どう使うか教えてください!」
先生
「では、初心者向けに分かりやすく解説していきますね!」
1. タプルとは何?リストとの違い
Pythonのタプルは、丸かっこ()で作る「順番付きの箱」のようなものです。中身を一度決めたら変更できません。これはimmutable(イミュータブル:変更不可能)という性質です。
一方、リストは角かっこ[]で作り、値を追加・削除・変更できる「mutable」(ミュータブル:変更可能)です。
※「変更不可能(イミュータブル)」や「変更可能」は初心者でも押さえておきたい基本概念です。
例を見てみましょう。
my_list = [10, 20, 30]
my_tuple = (10, 20, 30)
2. タプルの基本操作:長さ・取り出し
リストと同じように、len()で要素の数を調べたり、インデックスで値を取り出せます。
print(len(my_tuple)) # 要素の数を表示
print(my_tuple[1]) # 20 を取り出す
print(my_tuple[-1]) # 後ろから最初の値(30)
3
20
30
スライスも使えて、my_tuple[0:2]で先頭から2つの要素だけ取り出せます。
3. リストとタプルの違いを試してみよう
リストはあとから変えられますが、タプルは変更できません。
my_list[0] = 100 # OK
my_tuple[0] = 100 # エラーになる!
TypeError: 'tuple' object does not support item assignment
このように、タプルに変更を加えようとすると「TypeError(タイプエラー)」が起きて止まってしまいます。
4. なぜタプルを使うの?メリットは?
- タプルは変更できないので、安全に使いたいときに安心。
- イテレーション(順に処理)やループの速度が速いことがあります :contentReference[oaicite:1]{index=1}。
- メモリ使用量が少なめで効率的 :contentReference[oaicite:2]{index=2}。
- タプルはハッシュ可能なので、
辞書のキーとして使えます(リストは使えない) :contentReference[oaicite:3]{index=3}。
つまり、「変わらないデータ」を安全に、効率よく扱いたいときにぴったりです。
5. タプルの作り方:丸かっこ or コンマ?
通常は丸かっこ()で作りますが、コンマだけでもタプルになります。
t1 = (1, 2, 3)
t2 = 1, 2, 3
print(type(t1), type(t2))
<class 'tuple'> <class 'tuple'>
1つだけのタプルを作る場合は、(値,)のように最後にカンマが必要です。
6. ネスト構造や文字列→タプルもOK
リストと同じく、タプルの中にリストを入れたり、ネストしたりできます。
nested = (1, [2,3], ("a","b"))
print(nested[1][0]) # 2 を取り出す
文字列やリストをtuple()でタプルに変換することも可能です。
print(tuple("abc")) # ('a','b','c')
print(tuple([4,5,6])) # (4,5,6)
7. リストとタプルの使い分けまとめ
| 用途 | リスト | タプル |
|---|---|---|
| 変更可否 | ○:自由に変更できる | ×:作ったら変更不可 |
| 速度・効率 | 普通 | やや高速・メモリ効率◎ :contentReference[oaicite:4]{index=4} |
| 辞書のキー | 不可 | 可 |
| 使う場面 | データの追加や変更が必要な時 | 固定データやハッシュキーにする時 |
8. 初心者に向けた実生活での例え
リストは「買い物リスト」。好きに追加したり消したりできます。タプルは「予約済みの旅行日程」。一度決めたら変えられないイメージです。
何が変わるか変わらないかで使い分けると、わかりやすいです。
まとめ
今回の記事では、Pythonの基本データ型のひとつであるタプル(tuple)について、リストとの違いを中心に、作り方や使い方、実際にどんな場面で使うのが適しているのかを詳しく学びました。タプルはリストと同じく複数の値を順番に管理できるデータ構造ですが、大きな特徴として「一度作成したら中身を変更できない」という性質を持っています。この性質はイミュータブル(変更不可能)と呼ばれ、Pythonを学ぶうえで非常に重要な考え方です。
記事の中では、タプルとリストの文法的な違いとして、タプルは丸かっこ、リストは角かっこを使う点を確認しました。しかし、見た目以上に重要なのは「使い分けの考え方」です。値を追加したり、削除したり、後から変更する必要があるデータにはリストが向いており、逆に「最初に決めた内容を安全に保ちたい」「途中で書き換わってほしくない」データにはタプルが適しています。
また、タプルは変更できないため、プログラムの途中で誤って値を書き換えてしまう心配が少なく、安全性の高いデータ管理が可能です。さらに、タプルはハッシュ可能であるため、辞書のキーとして使用できる点も重要なメリットです。リストは辞書のキーに使えませんが、タプルであれば座標情報や固定条件の組み合わせなどをキーとして扱うことができます。この違いを理解しておくと、Pythonでの設計の幅が大きく広がります。
基本操作としては、len()で要素数を調べたり、インデックスやスライスで値を取り出したりと、リストとほぼ同じ感覚で扱える点も初心者にとって安心できるポイントです。一方で、要素の代入や削除を行おうとするとTypeErrorが発生するため、「タプルは中身を書き換えられない」という前提を常に意識することが大切です。
さらに、タプルは丸かっこだけでなく、カンマ区切りでも作成できることや、要素が一つだけの場合にはカンマが必要になる点、文字列やリストをtuple()関数で変換できる点など、実践で役立つ細かな知識も確認しました。ネスト構造にも対応しており、タプルの中にリストや別のタプルを入れることも可能なため、複雑なデータ構造の基礎としても活躍します。
Python初心者のうちは「とりあえずリストを使えばいい」と感じることも多いですが、タプルの特性を理解して使い分けられるようになると、コードの意図が明確になり、読みやすく、バグの少ないプログラムを書けるようになります。「Python タプル 使い方」「Python リスト タプル 違い」「Python tuple immutable」といったテーマは、今後の学習でも何度も登場する重要なポイントです。今回学んだ内容を土台として、ぜひ実際のコードの中でタプルを積極的に使ってみてください。
サンプルプログラムで振り返ろう
# タプルの基本操作
user_info = ("Alice", 25, "Tokyo")
print("名前:", user_info[0])
print("年齢:", user_info[1])
print("要素数:", len(user_info))
# 辞書のキーとして使う例
locations = {
(35.68, 139.76): "東京",
(34.69, 135.50): "大阪"
}
print(locations[(35.68, 139.76)])
このサンプルでは、タプルの要素参照や長さの取得、そして辞書のキーとしての利用例を確認できます。リストではできない使い方ができる点に注目しながら、実際にコードを動かしてみると理解が深まります。
生徒
「タプルはリストと似ているけど、変更できないところが一番の違いなんですね。」
先生
「その通りです。変わらないデータを扱うときに、タプルはとても頼りになります。」
生徒
「辞書のキーに使えるというのは、リストとの大きな違いだと思いました。」
先生
「よく気づきましたね。設計を考えるとき、その違いがとても重要になります。」
生徒
「最初はリスト、変えたくないデータはタプル、という使い分けを意識してみます。」
先生
「それができれば十分です。経験を積むほど、タプルの良さが実感できるようになりますよ。」