用語比較
del文とpop()の違い|返り値・スライス・リスト全体の削除をPython3エンジニア認定基礎試験で判断する
del文とpop()は、どちらもインデックスを指定してリストから要素を取り除く書き方で、違いは取り除いた値を受け取れるかどうかです。公式チュートリアルは、pop()は取り除いた要素を返し、del文は値を返さないと説明しています。
もう一つの違いは削除できる範囲で、del文はスライスを指定してまとめて除去したり、リスト全体を削除したりできます。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
del文とpop()の要点
del文
インデックスを指定して要素を削除する文。値を返さない。スライスの除去、リスト全体や変数そのものの削除もできる。
pop()
指定された位置の要素をリストから取り除いて返すメソッド。インデックスを指定しなければ末尾の要素を取り除いて返す。
違いを表で確認
| 比較軸 | del文 | pop() |
|---|---|---|
| 公式チュートリアルの説明 | 「pop() メソッドと違い、値を返しません」 | 指定された位置の要素をリストから取り除き、「それを返します」 |
| 返り値 | なし | 取り除いた要素 |
| インデックスを省略した場合 | del a は変数a自体の削除になる | a.pop() はリスト末尾の要素を取り除いて返す |
| スライスの指定 | del a[2:4] のようにスライスをまとめて除去できる | 公式チュートリアルの説明は1つの位置の要素を取り除く形だけ |
| リストが空・範囲外のとき | 公式チュートリアルに記述なし | IndexError を送出する |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
del文とpop()を「要素を消す書き方」とひとまとめに覚えている初学者
どちらもインデックスで位置を指定しますが、pop()は取り除いた要素を返し、del文は値を返しません。取り除いた値をあとで使うかどうかで選び分けます。
x = del a[0] のように書けると思っている人
del文は値を返さない文です。取り除いた値を変数に受け取りたい場合は x = a.pop(0) のようにpop()を使います。
リストを空にする書き方と変数を消す書き方を混同している再受験者
del a[:] はリストの全要素を削除して空のリスト [] を残し、公式チュートリアルは list.clear() と同様だと説明しています。del a は変数a自体を削除するため、その後でaを参照すると、別の値を代入するまでエラーになります。
問題文から答えを選ぶ手順
- 1
取り除いた値を使うか確認する
取り除いた要素を変数に受け取る、あるいは式の中で使う場合はpop()を使います。del文は値を返しません。
- 2
削除する範囲を確認する
1つの位置の要素ならどちらでも取り除けます。del a[2:4] のようにスライスでまとめて除去する場合はdel文を使います。
- 3
インデックスの有無を確認する
a.pop() のようにインデックスを省略するとリスト末尾の要素が対象になります。del a のように添字を付けないと、要素ではなく変数a自体の削除になります。
- 4
リストを空にするのか変数を消すのかを見分ける
del a[:] は空のリストが残り、del a は名前aそのものが消えます。設問のコードで削除後にaを参照していれば、どちらが実行されたかで結果が変わります。
試験での見分け方
- 1pop()は取り除いた要素を返し、del文は値を返さない。
- 2インデックスを指定しないa.pop()は、リスト末尾の要素を取り除いて返す。
- 3スライスの除去(del a[2:4])とリスト全体の要素の削除(del a[:])はdel文で書ける。
- 4del a は変数a自体を削除し、その後でaを参照するとエラーになる。
- 5空のリストや範囲外のインデックスにpop()を使うと
IndexErrorになる。
誤答しやすい選択肢
del文の結果を変数に代入できると考える
修正: del文は値を返しません。取り除いた値を受け取りたい場合は pop() を使います。
del a[:] と del a を同じ操作だと考える
修正: del a[:] は全要素を削除して空のリストを残します。del a は変数a自体を削除するため、その後でaを参照するとエラーになります。
a.pop() が先頭の要素を取り除くと考える
修正: インデックスを指定しない a.pop() はリスト末尾の要素を取り除いて返します。スタックとして使う場合もこの動きを利用します。
確認問題
Q1a = [-1, 1, 66.25, 333, 333, 1234.5] に del a[0] を実行し、続けて del a[2:4] を実行した後のaはどれ?
答え: [1, 66.25, 1234.5]
del a[0] で先頭の-1が除かれ [1, 66.25, 333, 333, 1234.5] になります。続けて del a[2:4] を実行すると、インデックス2と3の要素(どちらも333)が取り除かれます。
Q2stack = [3, 4, 5] に stack.append(6) と stack.append(7) を実行した後、stack.pop() が返す値はどれ?
答え: 7
インデックスを指定しない pop() はリスト末尾の要素を取り除いて返します。最後に追加した7が返り、stackは [3, 4, 5, 6] になります。
Q3取り除いた要素を変数に受け取りたいとき、使うのはdel文とpop()のどちら?
答え: pop()
公式チュートリアルは、del文はpop()メソッドと違い値を返さないと説明しています。値を受け取るにはpop()を使います。
到達チェック
- pop()が取り除いた要素を返し、del文が値を返さないことを説明できる
- インデックスを省略したa.pop()がリスト末尾の要素を取り除くと説明できる
- del文でスライスを除去した結果を書ける
- del a[:] と del a の違いを説明できる
- pop()が
IndexErrorを送出する条件を挙げられる
関連ページで確認する
同じ資格で次に知りたいこと
- dataclassと通常のクラスの違い|データをまとめるクラスの書き方をPython3エンジニア認定基礎試験で判断する
dataclassと通常のクラスの違いを、公式チュートリアル9.7が示す名前付きのデータ項目をまとめる書き方、__init__を書く手間、print表示と==の結果、型注釈の扱いまで、Python 3 エンジニア認定基礎試験での判断手順と確認問題つきで解説します。
- リストとタプルの違い|要素を変更できるかどうかをPython3エンジニア認定基礎試験で判断する
リストとタプルの違いを、公式チュートリアルの記述、要素の変更可否、単一要素タプルの書き方、辞書のキーに使えるかどうか、Python 3 エンジニア認定基礎試験での判断手順と確認問題まで解説します。
- セイウチ演算子 := と代入文 = の違い|式の中での代入をPython3エンジニア認定基礎試験で判断する
セイウチ演算子 := と代入文 = の違いを、公式チュートリアル5.7が示す式の中での代入の書き方、==と書くべき所に=を書く誤りを防ぐ理由、丸括弧が要る場面、Python 3 エンジニア認定基礎試験での判断手順と確認問題まで解説します。
よくある質問
Qdel文とpop()はどちらを使えばいい?
取り除いた要素を使うならpop()、値が要らない場合やスライス・リスト全体を削除する場合はdel文を使います。
Qdel文は取り除いた値を返す?
返しません。公式チュートリアルは、del文はpop()メソッドと違い値を返さないと説明しています。
Qa.pop()はどの要素を取り除く?
インデックスを指定しない場合は、リスト末尾の要素を取り除いて返します。
Qdel a[:]とlist.clear()は同じ?
公式チュートリアルは、list.clear()をリスト中の全ての要素を削除する操作とし、del a[:]と同様だと説明しています。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
