Python3エンジニア認定基礎試験 第5章 データ構造 予想問題と解説
Python3エンジニア認定基礎試験「第5章 データ構造」の予想問題を37問収録しています。各問を解説つきで掲載し、全問は演習画面で解けます。出題は公式シラバスの範囲内です。
この章の要点
リストのメソッド、タプルとシーケンス、辞書型、条件式の演算子、内包表記、集合型などを扱う分野です。全37問(基礎15問・標準15問・応用7問)を収録しています。
- リストのメソッド
- タプルとシーケンス
- 辞書型
- 条件式の演算子
- 内包表記
- 集合型
- del文
- ループのテクニック
- スタックとキュー
- シーケンスの比較
情報源と編集区分
公式範囲を確認し、問題数・難易度・確認点は当サイトが集計・編集。 一次情報確認日: 2026-09-18。
試験概要(公式)確認しておきたいポイント
当サイトの作問時に観察した、取り違えやすい論点です(公式の統計ではありません)。
- append と extend の混同。append は渡した値を1個の要素として足し、extend は要素を1つずつ足す。
- リストとタプルの可変・不変の取り違え。リストは後から変えられ、タプルは変えられない。スライスはどちらでも使える。
- 辞書のキー取得で、角かっこと get の動きを混同する。キーが無いとき角かっこは例外になり、get は既定値を返す。
- is と == の混同。is は同じオブジェクトかを見る演算子で、値が等しいかを見る == とは別。
- del 文と pop() の取り違え。公式チュートリアルは del 文について「これは pop() メソッドと違い、値を返しません。del 文はリストからスライスを除去したり、リスト全体を削除することもできます」と述べている。取り除いた値を使いたいかどうかで選ぶ。
- 空の集合の作り方。公式チュートリアルは「空集合を作成するためには set() を使用しなければなりません({} ではなく)。後者は空の辞書を作成します」と述べている。
この章の関連用語
この分野の問題で扱う用語です。意味があいまいなものは、用語集で定義を確認できます。
この章に関連する比較記事
混同しやすい2つの概念を並べて整理した記事です。
よくある質問
Q第5章 データ構造は何問収録されていますか?
現在37問を収録しています。内訳は基礎15問・標準15問・応用7問です。
Q第5章 データ構造の頻出論点は何ですか?
リストのメソッド、タプルとシーケンス、辞書型、条件式の演算子、内包表記、集合型などが出題対象です(当サイト収録問題に基づく編集部集計)。
Q間違えた問題はどう復習すればいいですか?
誤答した選択肢のどこがずれていたかを解説で確認し、関連用語がある場合は用語集で定義に戻ってから再演習することをおすすめします。
リストの末尾に別のリストの要素を1つずつ足して1本のリストにしたい。用いるメソッドはどれか。
答えと解説を見る
正解は「list.extend(iterable)」である。extend は渡した反復可能オブジェクトの要素を1つずつ取り出して末尾に足すため、結果は1本の平らなリストになる。append は渡した値そのものを1個の要素として末尾に足すので、リストを渡すとリストが要素として入った入れ子のリストになる。insert は指定した位置に1個の要素を挿入するメソッドで、位置を指定する点でも末尾へまとめて足す用途には合わない。copy はリストの浅いコピーを返すメソッドで、要素を足す操作ではない。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-09-11確認)
リストとタプルの違いとして正しいものはどれか。
答えと解説を見る
正解は「リストは要素を後から変更できるが、タプルは変更できない」である。リストは可変で、append や要素への代入で中身を変えられる。タプルは作ったあとに要素を入れ替えたり足したりできない。どちらもシーケンス型なのでインデックス指定とスライスはどちらでも使えるため、スライスがタプルだけの機能という説明は誤りである。入れ子にできるのもリストだけではなく、タプルの中にリストやタプルを入れることもできる。なお、要素が1つだけのタプルを作るときは単一の値を丸括弧で囲むだけでは不十分で、(1,) のように値の後ろにコンマを続ける必要がある。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-09-11確認)
辞書から、キーが存在しないときに例外を出さずに既定値を受け取りたい。用いるメソッドはどれか。
答えと解説を見る
正解は「get()」である。get は指定したキーの値を返し、キーが無い場合は例外ではなく既定値を返す。角かっこでキーを指定する書き方だとキーが無いときに例外になるため、存在しない可能性があるキーを扱う場面では get が使われる。items は辞書のキーと値の組を取り出すメソッドで、ループと組み合わせて使う。dict は辞書を作る関数、set は集合を作る関数で、どちらもキーの取り出しに使うものではない。get はキーを1つだけ指定する呼び出し方のほかに、2つ目の引数として既定値を指定する呼び出し方もでき、既定値を省略した場合はキーが無いときに None が返る。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-09-11確認)
is と == の違いとして正しいものはどれか。
答えと解説を見る
正解は「is は同じオブジェクトかを調べ、== は値が等しいかを調べる」である。is は2つの名前が同じオブジェクトを指しているかを見る演算子で、== は値として等しいかを見る演算子である。値が等しくても別のオブジェクトであれば is の結果は偽になりうるため、2つを取り違えると意図しない判定になる。is が数値専用、== が文字列専用といった型の制限はどちらにも無い。id() を使うとオブジェクトの識別値を確認でき、is はこの識別値が一致するかどうかを見ていると考えるとイメージしやすい。小さな整数や短い文字列は実装上たまたま同じオブジェクトを共有し is が真になることがあるが、これは言語仕様として保証された動作ではないため、値を比べたいときは == を使うべきである。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-09-11確認)
既存のリストから条件に合う要素だけを取り出して新しいリストを作る書き方として、公式チュートリアルが紹介しているものはどれか。
答えと解説を見る
正解は「リスト内包表記」である。公式チュートリアルはリスト内包表記を、既存の並びから要素を取り出して新しいリストを作る簡潔な書き方として紹介している。条件を付ければ条件に合う要素だけを残せる。list.filter や list.select というメソッドはリストには無い。加算演算子はリストを連結する演算子で、要素を選び出す用途ではない。内包表記は角括弧の中に式と for 節を書き、必要に応じて if 節で条件を加える形で書く。for 文で1つずつ要素を取り出しながら新しいリストへ追加していく処理を、1行にまとめて簡潔に書けるのが特徴である。既存の要素をそのまま選び出すだけでなく、式の部分を変えることで要素を変形しながら新しいリストを作ることもでき、絞り込みと変形を同じ書き方の枠組みで行える。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-09-11確認)
重複を取り除いた要素の集まりを扱いたい。用いる型はどれか。
答えと解説を見る
正解は「集合型」である。設問は重複した値を自動的に取り除く型を尋ねている。タプルは順序を保って値を並べるシーケンス型であり、同じ値を複数含めても取り除かれない。辞書はキーの重複こそ許さないが、値の側は重複してもそのまま保持される。文字列は文字の並びを表すデータであり、同じ文字が繰り返し現れても除去されない。値の重複を持たない集まりを扱う型は集合型であり、set() で作成できる。なお、公式チュートリアルは空の集合を作るときは {} ではなく set() を使わなければならないと述べており、{} と書くと集合ではなく空の辞書が作られてしまう点に注意が必要である。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-09-11確認)
リストから位置を指定して要素を取り除きたい。値を受け取る必要はない。用いるものはどれか。
答えと解説を見る
正解は「del 文」である。設問が問うのは、位置を指定するだけで要素を取り除ける手段であり、戻り値を受け取る必要はないという条件である。list.count と list.index はどちらも指定した値を手がかりに数や位置を調べるだけの操作であり、値そのものを取り除く働きは持たない。list.reverse は要素の並び順を反転させるだけで、要素数は変わらず特定の要素が消えるわけでもない。位置だけを指定して要素を取り除ける del 文と異なり、戻り値まで欲しい場合には list.pop() を使うことになる。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-09-11確認)
並びを昇順に並べ替えた新しい並びを受け取りたい。元の並びは変えたくない。用いるものはどれか。
答えと解説を見る
正解は「sorted()」である。設問が問うているのは、元の並びを保ったまま新しい並び替え結果を得られる関数はどれかという点である。list.sort は呼び出した本人のリストを書き換えるメソッドであり、元の並びは残らない。list.reverse も同様にリスト自身を書き換えるが、並べ替えではなく前後を反転させるだけの操作である。reversed は要素を逆順に取り出す仕組みであって、値の大小で並べ替える機能は持たない。元のリストを変えずに昇順・降順の新しい並びを得られるのは sorted だけである。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-09-11確認)
先に入れたものから取り出すキューとして使うとき、リストより適しているものはどれか。
答えと解説を見る
正解は「collections.deque」である。設問は要素を先頭から効率よく出し入れできる仕組みを尋ねている。タプルは生成後に要素を変更できない型であり、そもそも出し入れという操作に対応しない。集合型は要素の集まりを重複なく保持する型で、入れた順序を保持しないためキューの用途には合わない。文字列は文字の並びを表すデータであり、要素を追加・取り出しする操作の対象ではない。公式チュートリアルはキュー用途として collections.deque を挙げており、先頭から取り出す popleft が用意されている。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-09-11確認)
リストから指定した値の要素を1つ取り除きたい。位置は分からない。用いるメソッドはどれか。
答えと解説を見る
正解は「list.remove(value)」である。設問は位置が分からない状態で特定の値を取り除く方法を尋ねている。list.pop は取り除く位置をあらかじめ指定する必要があり、値だけを手がかりに呼び出すことはできない。list.clear は指定した値ではなくリストの中身をすべて消してしまう操作である。list.count は該当する値の個数を数えるだけで、要素を取り除く操作ではない。値を手がかりに最初に見つかった要素だけを取り除けるのは remove だけである。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-09-11確認)
辞書のキーと値の組をまとめて取り出しながらループしたい。用いるメソッドはどれか。
答えと解説を見る
正解は「items()」である。設問は辞書のキーと値をまとめて取り出す方法を尋ねている。get は1つのキーを指定してその値だけを取り出すメソッドであり、辞書全体を回る用途には向かない。dict は辞書そのものを新しく作る関数であり、既存の辞書から要素を取り出す操作ではない。set は集合を作る関数であり、辞書のキーと値の組とは無関係である。欲しいのが1つの値か辞書全体の組かをまず区別し、全体の組をまとめて取り出したい場合には items を使う。for key, value in d.items() のように for 文と組み合わせると、キーと値の両方を同時に受け取りながらループできる。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-09-11確認)
同じ型どうしのシーケンス(リストなど)を比較演算子で比べるとき、Pythonが用いる比較のしくみはどれか。
答えと解説を見る
正解は「先頭から要素を順に比べ、最初に異なる要素が見つかった時点で大小が決まる辞書的な順序」である。公式チュートリアルは、同じ型どうしのシーケンスを比較する際に辞書的な順序を用いると説明しており、先頭の要素から順に比べていき、値が異なる要素が見つかった時点でその2要素の大小関係がシーケンス全体の大小関係になる。要素数の多さだけで決まる比べ方や、各要素の合計値だけで決まる比べ方、末尾の要素だけで決まる比べ方は、辞書的な順序とは異なる。比較演算子で結果を判断する際は、要素の個数や合計値のような集計を経由せず、要素そのものを先頭から順番に確認していく点が辞書的な順序の特徴である。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-09-11確認)
queue = deque(['Eric', 'John', 'Michael']) に対して queue.append('Terry') と queue.append('Graham') を実行したあと、queue.popleft() を2回続けて呼び出すと、それぞれ何が返るか。
答えと解説を見る
正解は「'Eric'、次に'John'」である。公式チュートリアル5.1.2はdeque(['Eric', 'John', 'Michael'])にappend('Terry')・append('Graham')を実行すると並びが['Eric', 'John', 'Michael', 'Terry', 'Graham']になり、popleft()は先頭から取り出すため、到着順のとおり'Eric'、次に'John'が返り、残りはdeque(['Michael', 'Terry', 'Graham'])になると説明している。リストの先頭への挿入・取り出しは残りの全要素をシフトする必要があるため低速だが、collections.dequeは両端に対して高速な追加(append)と取り出し(popleft)を実現しており、先入れ先出しのキューの実装に適していると同節は述べている。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.1.2 リストをキューとして使う、2026-09-28確認)
[(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y] を実行した結果として正しいものはどれか。
答えと解説を見る
正解は「[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]」である。公式チュートリアル5.1.3はこの式をそのまま例に挙げ、xが[1, 2, 3]、yが[3, 1, 4]をそれぞれ順に回り、if x != yの条件を満たす組だけを式(x, y)の値として集めた結果だと説明している。式がタプルであるため丸括弧で囲まれており、構文エラーにはならない。同節は、これと同じ結果を得るfor文とif文の入れ子コードも示し、内包表記のfor・ifの並び順が通常のループの入れ子順と一致することを説明している。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.1.3 リストの内包表記、2026-09-28確認)
matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] に対して [[row[i] for row in matrix] for i in range(4)] を実行すると、matrixに対してどのような結果が得られるか。
答えと解説を見る
正解は「matrixの行と列を入れ替えた [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]」である。公式チュートリアル5.1.4はこの式をmatrixの行と列を入れ替える(転置する)例として示しており、list(zip(*matrix))でも同じ結果が得られると説明している。同節は、この式が外側のforでiをrange(4)にわたって回し、内側のfor row in matrixでrow[i](i列目の値)を集めるという2重のリスト内包表記であり、for文を使った通常のループと等価だと述べている。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.1.4 ネストしたリストの内包表記、2026-09-28確認)
a = [-1, 1, 66.25, 333, 333, 1234.5] に対して del a[:] を実行した結果として正しいものはどれか。
答えと解説を見る
正解は「a は空のリスト [] になる」である。公式チュートリアル5.2はa = [-1, 1, 66.25, 333, 333, 1234.5]にdel a[0]・del a[2:4]・del a[:]を順に実行する例を示し、最後のdel a[:]で[]になると述べている。5.1はlist.clear()もdel a[:]と同様の操作だと説明する。インデックスを指定しないdel a(変数名自体の削除)とは異なり、del a[:]の後もaという名前自体は空リストとして残る。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.2 del文、2026-09-28確認)
dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) を実行した結果として正しいものはどれか。
答えと解説を見る
正解は「{'sape': 4139, 'guido': 4127, 'jack': 4098}」である。公式チュートリアル5.5は、dict()コンストラクタがキーと値のペアのタプルを含むリストから辞書を生成すると述べ、この例をそのまま示している。同節はさらに、辞書内包表現を使って{x: x**2 for x in (2, 4, 6)}のように任意のキーと値のペアから辞書を作れること、キーが単純な文字列ならdict(sape=4139, guido=4127, jack=4098)とキーワード引数でも書けることも説明している。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.5 辞書型、2026-09-28確認)
questions = ['name', 'quest', 'favorite color']、answers = ['lancelot', 'the holy grail', 'blue'] という2つのリストを、対応する要素どうしを組にして同時にループしたい。用いる関数はどれか。
答えと解説を見る
正解は「zip()」である。公式チュートリアル5.6は「二つまたはそれ以上のシーケンス型を同時にループするために、関数 zip() を使って各要素をひと組みにすることができます」と述べ、for q, a in zip(questions, answers): の例を示している。enumerate()は1つのシーケンスに対してインデックスと要素を同時に取り出す関数、reversed()は1つのシーケンスを逆順にループする関数、sorted()は1つのシーケンスをソートした新しいリストを返す関数であり、いずれも2つの別々のシーケンスを組にする用途ではない。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.6 ループのテクニック、2026-09-28確認)
(1, 2) と (1, 2, -1) をシーケンスの辞書的な順序で比較すると、どちらが小さいと判定されるか。
答えと解説を見る
正解は「(1, 2) の方が小さい」である。公式チュートリアル5.8は「片方のシーケンスがもう一方の先頭部分にあたる部分シーケンスならば、短い方のシーケンスが小さいシーケンスとみなされます」と述べ、(1, 2) < (1, 2, -1) の例をそのまま示している。比較はまず最初の要素どうしを比べ、等しければ次の要素を比べるという辞書的な順序で行われ、(1, 2)は(1, 2, -1)の先頭部分(部分シーケンス)にあたるため、短い(1, 2)の方が小さいと判定される。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.8 シーケンスとその他の型の比較、2026-09-28確認)
要素を1つだけ持つタプルを作る書き方として、公式チュートリアルが示しているものはどれか。
答えと解説を見る
正解は「singleton = 'hello',」である。公式チュートリアル5.3は「一つの要素を持つタプルは、値の後ろにコンマを続ける(単一の値を丸括弧で囲むだけでは不十分です)ことで構築できます」と述べ、singleton = 'hello' , の例で len(singleton) が 1 になり、表示が ('hello',) になることを示している。タプルを作るのは丸括弧ではなくコンマであり、丸括弧だけで囲んでも値が文字列のままになる。角括弧で囲めばリストになり、コンマを付けない代入は単なる文字列である。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.3 タプルとシーケンス、2026-10-01確認)
次のうち、辞書のキーとして使えないものはどれか。
答えと解説を見る
正解は「([1, 2], 3) のように、リストを要素に含むタプル」である。公式チュートリアル5.5は、辞書のキーは何らかの変更不能な型になると述べ、文字列と数値は常にキーにできるとしている。タプルは、文字列・数値・その他のタプルのみを含む場合にはキーにできるが、直接的にも間接的にも変更可能なオブジェクトを含むタプルはキーにできない。([1, 2], 3) はリストを含むため、タプル自体は不変でもキーにはできない。リストそのものも、append() や extend() でインプレースに変更できるためキーに使えない。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.5 辞書型、2026-10-01確認)
t = 12345, 54321, 'hello!' としたあとで t[0] = 88888 を実行するとどうなるか。
答えと解説を見る
正解は「TypeError が発生する」である。公式チュートリアル5.3は、t = 12345, 54321, 'hello!' に対して t[0] = 88888 を実行すると TypeError: 'tuple' object does not support item assignment が発生する例を示し、コメントで"Tuples are immutable"と説明している。タプルは不変であり、要素への代入はできない。リストと違い、代入によって要素を書き換える操作は許されない。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.3 タプルとシーケンス、2026-10-01確認)
a = [-1, 1, 66.25, 333, 333, 1234.5] に対して del a[0] を実行し、続けて del a[2:4] を実行した。a の内容はどれか。
答えと解説を見る
正解は「[1, 66.25, 1234.5]」である。公式チュートリアル5.2は、この a に del a[0] を実行すると [1, 66.25, 333, 333, 1234.5] になり、続けて del a[2:4] を実行すると [1, 66.25, 1234.5] になる例を示している。del a[0] のあとは先頭の要素が消えて位置がずれるため、del a[2:4] が取り除くのは位置2と位置3にある2つの333である。スライス a[2:4] は終端の位置4を含まないので、位置2と3の2要素が対象になる。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.2 del 文、2026-10-01確認)
a = [1, 2, 3] のあとで del a を実行し、続けて名前 a を参照するとどうなるか。
答えと解説を見る
正解は「エラーになる。別の値を a に代入するまで参照できない」である。公式チュートリアル5.2は、del は変数全体の削除にも使えると述べ、del a の後で名前 a を参照すると、別の値を a に代入するまでエラーになるとしている。del a[:] がリストの中身を空にするのに対し、del a は名前そのものを削除する点が違う。名前が無くなるため、空のリストや None が返るわけでもない。公式チュートリアルは、del がリストからの要素やスライスの除去に使えるだけでなく、変数全体の削除にも使えるという整理をしている。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.2 del 文、2026-10-01確認)
空のリスト a = [] に対して a.pop() を実行するとどうなるか。
答えと解説を見る
正解は「IndexError が送出される」である。公式チュートリアル5.1は list.pop() について、指定された位置の要素をリストから取り除いてそれを返し、リストが空であるかインデックスがリストの範囲外の場合は IndexError を送出すると述べている。取り除く要素が存在しないので、None や空のリストを返すのではなく例外になる。なお、インデックスを省略した a.pop() はリスト末尾の要素を取り除いて返すが、その場合でも要素が1つも無ければ同じ IndexError になる。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.1 リストについてもう少し、2026-10-01確認)
for i, v in enumerate(['tic', 'tac', 'toe']): print(i, v) を実行したときの出力はどれか。
答えと解説を見る
正解は「0 tic、1 tac、2 toe の3行」である。公式チュートリアル5.6は「シーケンスにわたるループを行う際、enumerate() 関数を使うと、要素のインデックスと要素を同時に取り出すことができます」と述べ、この例で 0 tic・1 tac・2 toe が出力されるとしている。インデックスが先に、要素が後に取り出され、インデックスは 0 から始まる。同じ節では zip() が2つ以上のシーケンスを同時にループするための関数として紹介されており、enumerate() はインデックスと要素の組を得る用途で使い分ける。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.6 ループのテクニック、2026-10-01確認)
for i in reversed(range(1, 10, 2)): print(i) を実行したときの出力はどれか。
答えと解説を見る
正解は「9、7、5、3、1 の順に1行ずつ」である。公式チュートリアル5.6は「シーケンスを逆方向に渡ってループするには、まずシーケンスの範囲を順方向に指定し、次いで関数 reversed() を呼び出します」と述べ、reversed(range(1, 10, 2)) の例で 9・7・5・3・1 が出力されるとしている。range(1, 10, 2) は 1、3、5、7、9 を順方向に並べ、reversed() がそれを逆から取り出すので、9 から 1 まで2ずつ減る。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 5.6 ループのテクニック、2026-10-01確認)
a = [3, 1, 2] に対して r = a.sort() を実行したとき、r と a の値の組み合わせとして正しいものはどれか。
答えと解説を見る
正解は「r は None、a は [1, 2, 3] になる」である。公式チュートリアル5.1は list.sort() を、リストの項目をインプレース演算でソートするメソッドと説明している。公式ドキュメント「ソートのテクニック」は、list.sort() が元のリストを直接変更し、sorted() との混乱を避けるために None を返すと述べている。そのため r には None が入り、ソート結果は a 自身に反映される。新しいソート済みリストを受け取りたいときは sorted() を使う。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-10-26確認)
公式チュートリアル5.1が、リストの append(x) と extend(iterable) をスライス代入で言い換えている組み合わせとして正しいものはどれか。
答えと解説を見る
正解は「append(x) は a[len(a):] = [x]、extend(iterable) は a[len(a):] = iterable と同様」である。公式チュートリアル5.1は、append() をリストの末尾に要素を一つ追加するメソッドで a[len(a):] = [x] と同様、extend() をイテラブルのすべての要素を対象のリストに追加してリストを拡張するメソッドで a[len(a):] = iterable と同様と述べている。どちらも追加位置はリストの末尾で、違いは要素を1つ足すか、イテラブルの要素を1つずつ足すかにある。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-10-26確認)
空の集合を作るために公式チュートリアルが示している書き方はどれか。
答えと解説を見る
正解は「set()」である。公式チュートリアルは「空集合を作成するためには set() を使用しなければなりません({} ではなく)。後者は空の辞書を作成します」と述べている。波括弧 {} は空の辞書を作る書き方なので、空集合には使えない。空のリストは []、空のタプルは () で作る。集合は重複する要素を持たない順序なしのコレクションで、重複要素の除去や所属判定に使われる。シーケンスに set() を使うと重複要素が除かれる点もあわせて覚えておくとよい。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-10-26確認)
d = {'banana': 3, 'apple': 5, 'cherry': 1} に対する list(d) と sorted(d) の結果の説明として、公式チュートリアルの内容に合うものはどれか。
答えと解説を見る
正解は「list(d) はキーの挿入順のリスト、sorted(d) はソートされたキーのリストを返す」である。公式チュートリアル5.5は、辞書に対する list(d) がキーの挿入順のリストを返し、ソートされたリストが欲しい場合は代わりに sorted(d) を使うと述べている。この辞書なら list(d) は ['banana', 'apple', 'cherry']、sorted(d) は ['apple', 'banana', 'cherry'] になる。値や組を取り出したいときは values() や items() を使う。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-10-26確認)
{x: x**2 for x in (2, 4, 6)} を実行した結果として、公式チュートリアルが示しているものはどれか。
答えと解説を見る
正解は「{2: 4, 4: 16, 6: 36}」である。公式チュートリアル5.5は「辞書内包表現を使って、任意のキーと値のペアから辞書を作れます」と述べ、この式が {2: 4, 4: 16, 6: 36} になる例を示している。コロンの左の x がキー、右の x**2 が値になる。波括弧の中にコロン付きのペアを書くので、集合やリストではなく辞書ができる。式の中の for 句は、(2, 4, 6) の各要素を順に x に取り出して、キーと値のペアを1組ずつ作る。同じ形でリスト内包表記は角括弧で囲み、新しいリストを作る。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-10-26確認)
公式チュートリアル5.1.3が、for 文と append でリストを作る方法と比べたリスト内包表記の利点として述べている内容はどれか。
答えと解説を見る
正解は「いかなる副作用もなく計算でき、簡潔で読みやすい」である。公式チュートリアル5.1.3は、for 文と append で平方のリストを作ると、ループ終了後にも存在する変数 x を作る(または上書きする)ことに注意が必要だと述べる。squares = [x**2 for x in range(10)] なら副作用なしに計算でき、より簡潔で読みやすいと説明している。実行速度が必ず速くなるとは述べていない。なお、条件を満たす要素だけの部分シーケンスを作ることや、各要素に操作を行った結果を要素にしたリストを作ることが、リスト内包表記の主な利用場面として挙げられている。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-10-26確認)
公式チュートリアルが「del a[:] と同様」と述べているリストのメソッドはどれか。
答えと解説を見る
正解は「list.clear()」である。公式チュートリアル5.1は list.clear() を、リスト中のすべての要素を削除するメソッドで、del a[:] と同様だと述べている。pop() は指定位置の要素を取り除いて返し、remove(x) は値が x の最初の要素を取り除く。reverse() は要素を逆順に並べ替えるだけで、要素は削除しない。リストから位置や値を指定して要素を取り除くには、del 文や pop()、remove() を使う。全要素を一度に空にしたいときは clear() か del a[:] を選べばよい。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-10-26確認)
公式チュートリアル5.7が示す (1, 2, 3) == (1.0, 2.0, 3.0) の結果と、その理由として正しいものはどれか。
答えと解説を見る
正解は「True。== は値が等しいかどうかを調べ、1 と 1.0 は数値として等しい」である。公式チュートリアル5.7は (1, 2, 3) == (1.0, 2.0, 3.0) が True になる例を示している。== は値が等しいかを調べる演算子で、同じオブジェクトかどうかを調べるのは is である。異なる数値型同士は数値によって比較され、0 と 0.0 は等価と述べられている。同じオブジェクトかどうかを調べたいときは、演算子 is および is not を使う。値が等しいかどうかを調べたいときは == を使う、と使い分ける。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-10-26確認)
公式チュートリアル5.8が、文字列に対する辞書的な順序づけに用いると述べているものと、その例として示す関係の組み合わせとして正しいものはどれか。
答えと解説を見る
正解は「個々の文字ごとの ASCII 順序。'ABC' < 'C' が成り立つ」である。公式チュートリアル5.8は、文字列に対する辞書的な順序づけには個々の文字ごとに ASCII 順序を用いると述べ、'ABC' < 'C' < 'Pascal' < 'Python' の例を示している。先頭の文字から順に比べ、最初に差が出た文字で大小が決まる。'ABC' と 'C' では先頭の 'A' が 'C' より小さいので 'ABC' < 'C' となり、文字数の多さは影響しない。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-10-26確認)
stack = [3, 4, 5] に対して stack.append(6)、stack.append(7) を実行し、そのあと stack.pop() を3回続けて実行した。stack の最終的な中身として、公式チュートリアル5.1.1の内容に合うものはどれか。
答えと解説を見る
正解は「[3, 4]」である。公式チュートリアル5.1.1は、スタックでは最後に追加された要素が最初に取り出される(last-in, first-out)と述べ、この例で pop() を3回呼ぶと 7、6、5 の順に返り、stack が [3, 4] になることを示している。append で末尾に積み、インデックスなしの pop() は末尾から取り出すので、積んだ 6、7 に加えて元の 5 も取り除かれる。つまり、スタックでは append で末尾に積み、pop() をインデックスなしで呼んで末尾から取り出すという組み合わせで、後に入れたものから先に取り出される動作になる。
https://docs.python.org/ja/3/tutorial/datastructures.html (Python公式チュートリアル 第5章 データ構造、2026-10-26確認)
間違えた文法をチュートリアルで確かめる(Amazon)
一問一答で間違えた箇所を、文法の説明を最初から読んで確かめたいときのチュートリアルの日本語版です。購入前に版と試験範囲への対応を確認してください。
