用語比較
リストとタプルの違い|要素を変更できるかどうかをPython3エンジニア認定基礎試験で判断する
リストとタプルは、どちらもインデクスやスライスが使えるシーケンス型で、違いは作成後に要素を変更できるかどうかです。リストはインプレースに変更できる可変(mutable)の型、タプルは不変(immutable)の型で、t[0] = 88888 のような代入は TypeError になります。
この違いは、単一要素の書き方や辞書のキーに使えるかどうかにもつながります。要素が1つのタプルは (x,) と書き、リストは辞書のキーにできません。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
リストとタプルの要点
リスト
作成後も要素を変更できる可変(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)とだけ書くと、かっこが付いただけの値として扱われ、タプルにならない) |
| 辞書のキーに使えるか | 使えない。インプレースで変更できるため | 使える。ただし文字列・数値・他のタプルのみを含む場合に限る |
| たいていの要素の型 | 同じ型のオブジェクトが多い | 複数の型の要素からなることもある |
| アクセスの仕方 | たいていイテレートでアクセスする | アンパックやインデックスでアクセスすることが多い |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
リストとタプルを「複数の値をまとめる入れ物」として同じに覚えている初学者
どちらもインデクスやスライスは使えますが、作成後に要素を変更できるかどうかが違います。リストは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')
辞書のキーには変更不能な型が必要です。タプルは文字列・数値・他のタプルのみを含む場合にキーとして使えますが、リストはインプレースで変更できるため使えません。
到達チェック
- リストが可変、タプルが不変であることを、公式チュートリアルの代入例で説明できる
- 単一要素タプルの書き方(末尾のコンマ)を書ける
- タプルが辞書のキーに使える条件(文字列・数値・他のタプルのみを含む)を説明できる
- リストが辞書のキーに使えない理由を説明できる
関連ページで確認する
同じ資格で次に知りたいこと
- importとfrom〜importの違い|名前空間に入る名前・as・*をPython3エンジニア認定基礎試験で判断する
import文とfrom〜import文の違いを、公式チュートリアルの記述、名前空間に追加される名前、asによる別名、from 〜 import *と__all__の関係、Python 3 エンジニア認定基礎試験での判断手順と確認問題まで解説します。
- ミュータブルとイミュータブルの違い|リスト・タプル・文字列の変更と代入をPython3エンジニア認定基礎試験で判断する
ミュータブル(変更できる)とイミュータブル(変更できない)の違いを、リスト・タプル・文字列の公式チュートリアルの記述、代入で参照が共有される動き、スライスによる浅いコピー、確認問題つきで整理します。
- Python3基礎試験と基本情報技術者試験の違い(時間・受験料・範囲)
Python3エンジニア認定基礎試験(40問・60分、一般11,000円)と基本情報技術者試験(IPA、科目A 60問・90分と科目B 20問・100分、7,500円)の違いを、出題範囲、試験の構成、受験料、合格基準、受験できる時期まで公式情報で比べます。
よくある質問
Qリストとタプルはどちらを使えばいい?
作成後も要素を追加・削除・変更するならリスト、変更せず固定の複数値としてまとめて扱うならタプルを使います。辞書のキーにしたい場合はタプルを検討します。
Q辞書のキーにリストを使うとどうなる?
使えません。公式チュートリアルは、辞書のキーには変更不能な型が必要で、リストはインプレースで変更できるためキーにできないと説明しています。
Qタプルの中にリストを入れることはできる?
できます。公式チュートリアルは v = ([1, 2, 3], [3, 2, 1]) のように、タプルにリストのような変更可能なオブジェクトを含められると説明しています。ただし、辞書のキーに使えるのは文字列・数値・他のタプルだけを含むタプルです。リストのように変更できるオブジェクトを含むタプルは、辞書のキーには使えません。
Q要素が1つのタプルを丸括弧だけで作るとどうなる?
('hello')は丸括弧で式をくくっただけになり、タプルではなく値'hello'そのものになります。タプルにするには'hello',のように末尾へコンマを付けます。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
