用語比較
リストとタプルの違い|要素を変更できるかどうかをPython3エンジニア認定基礎試験で判断する
リストとタプルは、どちらもインデクスやスライスが使えるシーケンス型です。公式チュートリアルは、t = 12345, 54321, 'hello!' に対して t[0] = 88888 を実行すると TypeError: 'tuple' object does not support item assignment になる例を示し、タプルは不変(immutable)だと説明しています。リストはappend()やextend()のようなメソッドで作成後もインプレースに変更できる可変(mutable)の型です。
この変更可否の違いが、単一要素の書き方や辞書のキーに使えるかどうかにもそのままつながります。要素が1つのタプルは、値の後ろにコンマを続けて (x,) と書かないと作れません。また辞書のキーには変更不能な型が必要なため、タプルは文字列・数値・他のタプルのみを含む場合にキーとして使えますが、リストはインプレースで変更できるためキーにはできません。
このページは、リストとタプルを「複数の値をまとめる入れ物」とひとまとめに覚えている人を対象にしています。作成後に要素を変更するかどうかと、辞書のキーとして使うかどうかの2点から、公式チュートリアル第5章「データ構造」の記述だけを使って判断します。
この記事の目次
この記事の根拠と出典
本文の主要なセクションでは、公式一次資料と照合した内容と編集部の整理を、見出しの下のラベルで区別しています。 試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-09-18。
結論
リスト
作成後も要素を変更できる可変(mutable)のシーケンス型。append()やextend()などのメソッドでインプレースに変更する。
タプル
作成後は要素を変更できない不変(immutable)のシーケンス型。文字列・数値・他のタプルのみを含む場合は辞書のキーに使える。
違いを表で確認
| 比較軸 | リスト | タプル |
|---|---|---|
| 変更可否 | 可変(mutable)。インプレースで変更できる | 不変(immutable)。作成後に要素を代入するとTypeError |
| 公式チュートリアルの例 | a.append(x) や a.extend(iterable) で要素を追加できる | t[0] = 88888 を実行すると TypeError: 'tuple' object does not support item assignment |
| 要素が1つの場合の書き方 | [x](角括弧に値を1つ) | (x,)(末尾のコンマが必須。(x)だけでは値そのものになりタプルにならない) |
| 辞書のキーに使えるか | 使えない。インプレースで変更できるため | 使える。ただし文字列・数値・他のタプルのみを含む場合に限る |
| たいていの要素の型 | 同じ型のオブジェクトが多い | 複数の型の要素からなることもある |
| アクセスの仕方 | たいていイテレートでアクセスする | アンパックやインデックスでアクセスすることが多い |
どこで迷っているかを切り分ける
リストとタプルを「複数の値をまとめる入れ物」として同じに覚えている初学者
どちらもインデクスやスライスは使えますが、作成後に要素を変更できるかどうかが違います。リストはappend()等でインプレースに変更でき、タプルは公式チュートリアルの例のとおりt[0] = 88888がTypeErrorになります。
単一要素タプルを丸括弧だけで作ろうとする人
singleton = ('hello') と書いても、これは丸括弧で式をくくっただけの文字列'hello'になりタプルにはなりません。公式チュートリアルは「一つの要素を持つタプルは、値の後ろにコンマを続けることで構築できます」と説明しており、singleton = 'hello', のように末尾のコンマが必要です。
辞書のキーにリストを使おうとする再受験者
公式チュートリアルは、辞書のキーには何らかの変更不能な型が必要だと説明しています。リストはappend()やextend()、スライスの代入でインプレースに変更できるためキーにはできません。固定の複数値をキーにしたい場合はタプルを使います。
具体例で使い分ける
例 1
集めたデータを後から追加・削除しながら管理する
ユーザーが入力するたびに値を追加したり、条件に合う要素を取り除いたりしながら扱うデータです。
- 作成後も要素を追加・削除する操作が中心になっています。
- append()やremove()のようなメソッドでインプレースに変更する前提です。
- 要素を変更できないタプルでは、変更のたびに新しいタプルを作り直す必要があり不便です。
結論: 作成後も要素を変更し続けるので、リストを選びます。
例 2
緯度・経度のような固定の複数値をまとめて辞書のキーにする
(35.6, 139.7)のような座標の組を、キャッシュや集計のキーとして辞書に登録する場面です。
- 登録後に値を変更する必要はなく、複数の値をひとまとまりの識別子として扱っています。
- 公式チュートリアルのとおり、辞書のキーには変更不能な型が必要です。
- 数値だけを含むタプルなので、辞書のキーとして使える条件を満たします。
結論: 変更しない固定の複数値を識別子として扱うので、タプルを選びます。
問題文から答えを選ぶ手順
- 1
作成後に要素を変更する必要があるか確認する
追加・削除・代入などインプレースの変更が必要ならリストを使います。
- 2
辞書のキーとして使うか確認する
辞書のキーにしたい場合、変更不能な型が必要なのでリストは使えません。文字列・数値・他のタプルのみを含むタプルを検討します。
- 3
要素が1つの場合はコンマの有無を確認する
リストは[x]でよいですが、タプルは(x,)のように末尾にコンマが必要です。(x)だけでは値そのものになります。
- 4
用途を確認する
同じ種類の要素を繰り返し変更しながら扱うならリスト、固定の複数値をひとまとまりとして扱うならタプルという整理と一致するか確認します。
試験での見分け方
- 1リストは作成後も要素を変更できる可変のシーケンス型。
- 2タプルは作成後に要素を変更できない不変のシーケンス型で、t[0] = 88888のような代入はTypeErrorになる。
- 3単一要素のタプルは、値の後ろにコンマを続けないと作れない。(x)だけでは値そのものになる。
- 4辞書のキーには変更不能な型が必要で、タプルは文字列・数値・他のタプルのみを含む場合に使えるが、リストはインプレースで変更できるため使えない。
誤答しやすい選択肢
タプルの要素をリストと同じ感覚で代入しようとする
修正: タプルは不変なので、t[0] = 88888のような代入はTypeError: 'tuple' object does not support item assignmentになります。要素を変えたい場合は新しいタプルを作り直します。
単一要素タプルを丸括弧だけで作り、意図した型にならない
修正: singleton = ('hello')は文字列のままです。singleton = 'hello',のように末尾のコンマを付けてタプルにします。
リストを辞書のキーに使おうとする
修正: リストはインプレースで変更できるため辞書のキーにはできません。固定の複数値をキーにしたい場合はタプルを使います。
確認問題
Q1t = (12345, 54321, 'hello!') に対して t[0] = 88888 を実行するとどうなる?
答え: TypeError: 'tuple' object does not support item assignment
タプルは不変なので、作成後に要素へ代入しようとするとエラーになります。
Q2'hello'という値1つだけを持つタプルを作る正しい書き方はどれ?
答え: 'hello',(末尾にコンマを付ける)
公式チュートリアルは、一つの要素を持つタプルは値の後ろにコンマを続けることで構築できると説明しています。丸括弧だけで囲むのは不十分です。
Q3辞書のキーとして使えるのは、['a', 'b']と('a', 'b')のどちら?
答え: ('a', 'b')
辞書のキーには変更不能な型が必要です。タプルは文字列・数値・他のタプルのみを含む場合にキーとして使えますが、リストはインプレースで変更できるため使えません。
到達チェック
- リストが可変、タプルが不変であることを、公式チュートリアルの代入例で説明できる
- 単一要素タプルの書き方(末尾のコンマ)を書ける
- タプルが辞書のキーに使える条件(文字列・数値・他のタプルのみを含む)を説明できる
- リストが辞書のキーに使えない理由を説明できる
関連ページで確認する
よくある質問
Qリストとタプルはどちらを使えばいい?
作成後も要素を追加・削除・変更するならリスト、変更せず固定の複数値としてまとめて扱うならタプルを使います。辞書のキーにしたい場合はタプルを検討します。
Q辞書のキーにリストを使うとどうなる?
使えません。公式チュートリアルは、辞書のキーには変更不能な型が必要で、リストはインプレースで変更できるためキーにできないと説明しています。
Qタプルの中にリストを入れることはできる?
できます。公式チュートリアルは v = ([1, 2, 3], [3, 2, 1]) のように、タプルにリストのような変更可能なオブジェクトを含められると説明しています。ただしそのタプル自体は文字列・数値・他のタプルのみを含む場合の条件を満たさないため、辞書のキーには使えません。
Q要素が1つのタプルを丸括弧だけで作るとどうなる?
('hello')は丸括弧で式をくくっただけになり、タプルではなく値'hello'そのものになります。タプルにするには'hello',のように末尾へコンマを付けます。
執筆: ミナト編集部(運営者情報を見る)