用語比較
list.remove()とlist.pop()の違い|値を指定して削除するか、位置を指定して取り出すか(Python3基礎)
list.remove()とlist.pop()の違いは指定するものと返り値で、remove()は値を指定して最初に見つかった要素を削除し、pop()は位置(インデックス)を指定して要素を取り除き、その要素を返します。
該当する値が無いとremove()はValueError、リストが空かインデックスが範囲外だとpop()はIndexErrorを送出します。pop()はインデックスを省くと末尾の要素を返します。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
list.remove(value)とlist.pop(index)の要点
list.remove(value)
値を指定して、その値と等しい最初の要素を削除する。返り値はNone。値がなければValueError。
list.pop(index)
位置を指定して要素を取り除き、その要素を返す。位置を省略すると末尾。空のリストや範囲外の位置ではIndexError。
違いを表で確認
| 比較軸 | list.remove(value) | list.pop(index) |
|---|---|---|
| 指定するもの | 取り除きたい値 | 取り除きたい位置(省略すると末尾) |
| 返り値 | None(取り除いた要素は返さない) | 取り除いた要素 |
| 対象が見つからないとき | ValueError(値がリストにない) | IndexError(リストが空、または位置が範囲外) |
| 同じ値が複数あるとき | 最初の1つだけを削除する | 値は関係なく、指定した位置の1つを取り除く |
| 向いている場面 | 消す値は分かるが、位置は分からない | 末尾や特定の位置の要素を取り出して使う(スタックの取り出しなど) |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
値は分かるが、位置は分からない人
削除したいのが 'b' のような値なら、remove('b') が合っています。位置を調べる必要はありません。
取り除いた要素を、その場で使いたい人
pop() は取り除いた要素を返すので、x = a.pop() のように受け取れます。remove() の返り値はNoneなので、受け取っても使えません。
リストをスタックのように使いたい人
公式チュートリアルの5.1.1は、末尾に追加するappend()と、インデックスを指定しないpop()を組み合わせて、最後に入れた要素を最初に取り出す使い方を示しています。
具体例で使い分ける
例 1
同じ値が2つあるリストで、remove()を使う場合
a = [1, 2, 3, 2] に対して a.remove(2) を実行する場面です。
- remove() は値が等しい最初の要素を削除します。先頭に近い2が消え、後ろの2は残ります。
- 返り値は
Noneで、実行後の a は [1, 3, 2] になります。
結論: 同じ値が複数あっても、削除されるのは最初の1つだけです。
例 2
pop()の位置の指定と省略
b = [10, 20, 30] に対して b.pop() を実行し、続けて b.pop(0) を実行する場面です。
- b.pop() は位置を省略しているので、末尾の30を取り除いて返します。b は [10, 20] になります。
- 続く b.pop(0) は、先頭(位置0)の10を取り除いて返します。b は [20] になります。
結論: 位置を省略すると末尾、0を指定すると先頭の要素を取り出します。
例 3
見つからないとき、エラーの種類が違う場合
[1, 2].remove(5)、[].pop()、[1, 2].pop(5) をそれぞれ実行する場面です。
- remove(5) は、リストに5がないので
ValueErrorです。 - [].pop() は空のリストから取り出そうとするので
IndexErrorです。pop(5) も、位置5がリストの範囲外なのでIndexErrorです。
結論: 値を探して見つからないのがValueError、位置が使えないのがIndexErrorです。
問題文から答えを選ぶ手順
- 1
手がかりが値か位置かを決める
消したい要素を、値で言えるのか、位置で言えるのかを決めます。
- 2
値ならremove()
値が分かっていて、最初の1つを消せばよいなら、remove() を使います。
- 3
位置や末尾ならpop()
位置が決まっている、または末尾から順に取り出すなら、pop() を使います。取り除いた要素も受け取れます。
- 4
値から位置を探すなら、index()を併用する
値は分かるが、位置を指定して取り出したい場合は、index() で位置を調べてから pop() に渡す方法もあります。index() も、値がなければ
ValueErrorです。
試験での見分け方
- 1remove() は値で指定し、最初に等しい1つだけを削除する。返り値は
None。 - 2pop() は位置で指定し、取り除いた要素を返す。位置を省略すると末尾。
- 3値が見つからないと
ValueError、位置が使えないとIndexErrorになる。
誤答しやすい選択肢
remove()に位置を渡す
修正: remove() が受け取るのは値です。a.remove(0) は位置0ではなく、値が0の要素を探します。位置で消すなら pop() を使います。
remove()で同じ値がすべて消えると考える
修正: 削除されるのは最初に見つかった1つだけです。すべて消したいなら、条件に合う要素だけを集めた新しいリストを作るなど、別の方法を使います。
remove()の返り値を取り除いた要素だと考える
修正: remove() の返り値はNoneです。取り除いた要素を受け取りたいなら、pop() を使います。
確認問題
Q1a = [1, 2, 3, 2] に a.remove(2) を実行したあと、a の中身は何ですか?
答え: [1, 3, 2]
remove() は値が等しい最初の要素だけを削除します。後ろの2は残ります。
Q2b = [10, 20, 30] に対する b.pop(0) の返り値は何ですか?
答え: 10
pop(0) は位置0の要素を取り除いて返します。b は [20, 30] になります。
Q3空のリストに [].pop() を実行すると、どのエラーになりますか?
答え: IndexError
公式チュートリアルは、リストが空であるか、インデックスが範囲外の場合にpop()がIndexErrorを送出すると説明しています。
Q4[1, 2].remove(5) を実行すると、どのエラーになりますか?
答え: ValueError
remove() は該当する値の要素がなければValueErrorを送出します。
到達チェック
- remove() は値、pop() は位置で指定すると言える
- pop() だけが取り除いた要素を返すと言える
- 同じ値が複数あるとき remove() は最初の1つだけを削除すると説明できる
ValueErrorとIndexErrorが出る場面を区別できる
関連ページで確認する
同じ資格で次に知りたいこと
- re.match()とre.search()の違い|文字列の先頭だけ調べるか、どこにあっても探すか(Python3基礎)
re.match()とre.search()の違いを、調べる範囲、結果が
Noneになる場合、MULTILINEとの関係、fullmatch()との違いで解説。Python3エンジニア認定基礎試験の第10章(reモジュール)の確認問題つきです。 - pass文とcontinue文の違い|何もしないか、ループの次の繰り返しへ進むか(Python3基礎)
pass文とcontinue文の違いを、動き(何もしないか、残りを飛ばすか)、使える場所、同じループに入れたときの結果で解説。Python3エンジニア認定基礎試験の第4章(制御構造ツール)の確認問題つきです。
- 集合の演算子とメソッドの違い|| & - ^ と union()・intersection()の引数の扱い(Python3基礎)
集合の | & - ^ と、union()・intersection()・difference()・symmetric_difference()の違いを、引数に渡せるもの、リストを渡したときの結果、動作例で解説。Python3エンジニア認定基礎試験の集合型の確認問題つきです。
よくある質問
Qlist.removeとlist.popの一番大きな違いは何ですか?
指定するものと返り値です。remove() は値を指定して最初に等しい要素を削除しNoneを返し、pop() は位置を指定して要素を取り除き、その要素を返します。
Qpopに位置を指定しないとどうなりますか?
末尾の要素を取り除いて返します。公式チュートリアルは、インデックスが指定されていない場合、a.pop() はリスト末尾の要素を取り除いて返すと説明しています。
Qremoveで同じ値が複数あるとき、どれが削除されますか?
値が等しい最初の要素だけが削除されます。残りの同じ値は、リストに残ります。
Qremoveとpopで、見つからないときのエラーは同じですか?
違います。remove() は値がないとValueError、pop() は空のリストや範囲外の位置でIndexErrorを送出します。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
