AI資格ドリル
資格を選ぶ

用語比較

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

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

どこで迷っているかを切り分ける

01

値は分かるが、位置は分からない人

削除したいのが 'b' のような値なら、remove('b') が合っています。位置を調べる必要はありません。

02

取り除いた要素を、その場で使いたい人

pop() は取り除いた要素を返すので、x = a.pop() のように受け取れます。remove() の返り値はNoneなので、受け取っても使えません。

03

リストをスタックのように使いたい人

公式チュートリアルの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. 1

    手がかりが値か位置かを決める

    消したい要素を、値で言えるのか、位置で言えるのかを決めます。

  2. 2

    値ならremove()

    値が分かっていて、最初の1つを消せばよいなら、remove() を使います。

  3. 3

    位置や末尾ならpop()

    位置が決まっている、または末尾から順に取り出すなら、pop() を使います。取り除いた要素も受け取れます。

  4. 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が出る場面を区別できる

同じ資格で次に知りたいこと

よくある質問

Qlist.removeとlist.popの一番大きな違いは何ですか?

A

指定するものと返り値です。remove() は値を指定して最初に等しい要素を削除しNoneを返し、pop() は位置を指定して要素を取り除き、その要素を返します。

Qpopに位置を指定しないとどうなりますか?

A

末尾の要素を取り除いて返します。公式チュートリアルは、インデックスが指定されていない場合、a.pop() はリスト末尾の要素を取り除いて返すと説明しています。

Qremoveで同じ値が複数あるとき、どれが削除されますか?

A

値が等しい最初の要素だけが削除されます。残りの同じ値は、リストに残ります。

Qremoveとpopで、見つからないときのエラーは同じですか?

A

違います。remove() は値がないとValueError、pop() は空のリストや範囲外の位置でIndexErrorを送出します。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)