AI資格ドリル
資格を選ぶ↓

第5章 データ構造(40問中7問)

Python3基礎試験のデータ構造:リスト・タプル・集合・辞書の違い

第5章のデータ構造は、リスト・タプル・集合・辞書の4つの型を、変更できるか、順序があるか、重複できるかで見分ける章です。このページでは、試験で問われやすい動きを、Python 3.9.6で実際に実行した結果で確かめます。覚えるのは、タプルの要素には代入できないこと、空の波括弧は辞書であること、辞書のキーにリストは使えないことの3つです。

このページは試験の学習用の整理です。公式の問題は転載せず、コードはすべて説明用に作った例です。

公式情報の確認

試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-09-18。

試験の出題範囲・実施要項は変動するため、受験前に公式情報を確認してください。

結論

  1. リストは変更できる並び、タプルは変更できない並び。タプルの要素には代入できない
  2. 集合は重複を持たず順序がない。空の集合は set() で作り、{} は空の辞書になる
  3. 辞書はキーで引く。存在しないキーを [] で引くと KeyError、get() なら None を返す
  4. 辞書のキーには変更できない型だけを使える。リストはキーにできない
  5. sort() は戻り値が None で元を並べ替え、sorted() は新しいリストを返す。pop() は値を返し、del は返さない

4つの型の違い

まず、見分ける軸を表にします。書き方の括弧が違うだけでなく、変更できるか、重複できるかが違います。

型書き方変更順序重複主な使い道
リスト[1, 2, 3]変更できる順序あり重複できる要素を足したり消したりする並び
タプル(1, 2, 3)変更できない順序あり重複できる変えない組(座標など)
集合{1, 2, 3}要素の追加・削除はできる順序なし重複しない重複の除去・含まれるかの判定
辞書{'a': 1}変更できるキーで引くキーは一意名前と値の対応

公式チュートリアルは、タプルは不変で通常は異なる型の要素が並び、リストは可変で要素は通常同じ型だと説明しています。集合は、重複する要素をもたない、順序づけられていない要素の集まりです。

リストとタプル:変更できるか

並べ替えの2つの書き方は取り違えやすい点です。リストの sort() は元のリストをその場で並べ替え、戻り値は None です。sorted() は新しいリストを返し、元のリストを変えません。タプルには sort() がなく、sorted() に渡すと並べ替えたリストが返ります。

コード実行結果ひとこと
a = [3, 1, 2] print(a.sort(), a)None [1, 2, 3]sort() は元のリストを並べ替え、戻り値は None
a = [3, 1, 2] print(sorted(a), a)[1, 2, 3] [3, 1, 2]sorted() は新しいリストを返し、元は変わらない
t = (1, 2, 3) t[0] = 9TypeError: 'tuple' object does not support item assignmentタプルの要素には代入できない
t = (1, 2, [3]) t[2].append(9) print(t)(1, 2, [3, 9])タプルの中のリストは変更できる

print(a.sort()) と書くと None が表示される、という形は、選択肢で狙われやすい書き方です。また、公式チュートリアルによると、タプルにリストのような変更可能なオブジェクトを含めることはできます。変更できないのは、タプルが持つ要素そのものの差し替えです。

集合:重複が消える

公式チュートリアルは、集合の基本的な用途を、要素が含まれるかどうかの判定と、重複する要素の除去としています。集合は順序がないので、表示すると要素が予想と違う順序で現れることがあります。和・積・差・対称差の演算もできます。

コード実行結果ひとこと
{'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}要素は4つ(重複が消える)len() は 4
type({})<class 'dict'>空の波括弧は辞書
type(set())<class 'set'>空の集合は set() で作る

空の波括弧 {} は集合ではなく空の辞書です。空の集合は set() で作ります。演算の例として、'abracadabra' と 'alacazam' の文字の集合では、積(両方にある文字)が a と c、差(前者にだけある文字)が b・d・r になります。

辞書:キーで引く

辞書は、キーと値のペアの集まりで、キーは辞書の中で一意です。数の並びで引くリストと違い、キーで引きます。存在しないキーを d[キー] で引くと KeyError になりますが、get() は例外を出さず、キーが無ければ None か指定した値を返します。

コード実行結果ひとこと
d = {'apple': 3, 'banana': 5} d['grape']KeyError: 'grape'存在しないキーを [] で引くと例外
d.get('grape')Noneget() は例外にならず None を返す
d.get('grape', 0)0第2引数が、キーが無いときの値になる
e = {} e[(1, 2)] = 1{(1, 2): 1}数だけを含むタプルはキーにできる
e = {} e[[1, 2]] = 1TypeError: unhashable type: 'list'リストはキーにできない
e[(1, [2])] = 1TypeError: unhashable type: 'list'リストを含むタプルもキーにできない

公式チュートリアルは、キーは変更不能な型でなければならず、文字列と数値は常にキーにでき、タプルは文字列・数値・ほかのタプルだけを含むときにキーにできると述べています。リストは append() などでその場で変更できるため、キーにできません。

del・pop・removeの使い分け

リストから要素を消す3つの書き方は、何を指定するか、値を返すか、見つからないときにどうなるかが違います。

書き方戻り値注意例
l.pop()取り除いた値を返す空だと IndexError[1, 2, 3] → 3 を返し [1, 2]
l.remove(9)返さない値が無いと ValueError値で探して最初の1つを消す
del l[1:3]返さない位置やスライスで指定[1, 2, 3, 4] → [1, 4]

公式チュートリアルによると、del 文は pop() と違って値を返さず、スライスの削除や全要素の削除もできます。remove() は、値と等しい最初の要素を削除し、該当がなければ ValueError を出します。値を取り出して使いたいなら pop()、位置や範囲で消すなら del、値を指定して消すなら remove() です。

Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)

試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。

PR

ほかの資格を含む参考書・問題集の一覧を見る

よくある質問

第5章のデータ構造は、何問出ますか?

このサイトが整理した公式の章別出題数では、40問中7問(17.5%)です。第4章の制御構造ツールの9問に次ぐ多さで、リスト・タプル・集合・辞書のどれが変更できるか、どんな例外が出るかが問われやすい章です。

タプルは完全に変更できないのですか?

タプル自体の要素の入れ替えはできませんが、公式チュートリアルによると、タプルにリストのような変更可能なオブジェクトを含めることはできます。上の例では、タプルの中のリストに append() で9を足せました。変更できないのは、タプルが持つ要素の参照先を差し替えることです。

辞書のキーに、リストを使えないのはなぜですか?

公式チュートリアルは、リストは append() や extend() などでその場で変更できるため、キーにできないと説明しています。キーには文字列・数値・タプルのような変更できない型を使います。リストを含むタプルも、同じ理由でキーにできません。

辞書に同じキーで2回代入すると、どうなりますか?

後から入れた値で置き換わります。公式チュートリアルは、すでに使われているキーで値を記憶すると、以前そのキーに結び付けられていた値は忘れ去られると述べています。キーは辞書の中で一意になります。

次に読むと効率的なページ

執筆: ミナト編集部(運営者情報を見る)