用語比較
del文とpop()の違い|返り値・スライス・リスト全体の削除をPython3エンジニア認定基礎試験で判断する
del文とpop()は、どちらもインデックスを指定してリストから要素を取り除く書き方です。公式チュートリアルはdel文について「pop() メソッドと違い、値を返しません」と説明し、pop()については指定された位置の要素をリストから取り除いて「それを返します」と説明しています。取り除いた値を受け取れるかどうかが違います。
もう一つの違いは削除できる範囲です。del文はスライスを指定してまとめて除去したり、リスト全体を削除したりできます。a = [-1, 1, 66.25, 333, 333, 1234.5] に del a[0] を実行すると [1, 66.25, 333, 333, 1234.5] になり、続けて del a[2:4] を実行すると [1, 66.25, 1234.5] になります。
このページは、Python 3 エンジニア認定基礎試験の主教材である公式チュートリアル第5章「データ構造」の記述だけを使い、del文とpop()を「要素を消す書き方」とひとまとめに覚えている人が、返り値と削除範囲で見分けられるように整理しています。
この記事の目次
この記事の根拠と出典
本文の主要なセクションでは、公式一次資料と照合した内容と編集部の整理を、見出しの下のラベルで区別しています。 試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-09-18。
結論
del文
インデックスを指定して要素を削除する文。値を返さない。スライスの除去、リスト全体や変数そのものの削除もできる。
pop()
指定された位置の要素をリストから取り除いて返すメソッド。インデックスを指定しなければ末尾の要素を取り除いて返す。
違いを表で確認
| 比較軸 | del文 | pop() |
|---|---|---|
| 公式チュートリアルの説明 | 「pop() メソッドと違い、値を返しません」 | 指定された位置の要素をリストから取り除き、「それを返します」 |
| 返り値 | なし | 取り除いた要素 |
| インデックスを省略した場合 | del a は変数a自体の削除になる | a.pop() はリスト末尾の要素を取り除いて返す |
| スライスの指定 | del a[2:4] のようにスライスをまとめて除去できる | 公式チュートリアルの説明は1つの位置の要素を取り除く形だけ |
| リストが空・範囲外のとき | 公式チュートリアルに記述なし | IndexError を送出する |
どこで迷っているかを切り分ける
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が2つ除かれます。
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を送出する条件を挙げられる
関連ページで確認する
よくある質問
Qdel文とpop()はどちらを使えばいい?
取り除いた要素を使うならpop()、値が要らない場合やスライス・リスト全体を削除する場合はdel文を使います。
Qdel文は取り除いた値を返す?
返しません。公式チュートリアルは、del文はpop()メソッドと違い値を返さないと説明しています。
Qa.pop()はどの要素を取り除く?
インデックスを指定しない場合は、リスト末尾の要素を取り除いて返します。
Qdel a[:]とlist.clear()は同じ?
公式チュートリアルは、list.clear()をリスト中の全ての要素を削除する操作とし、del a[:]と同様だと説明しています。
執筆: ミナト編集部(運営者情報を見る)