Python: リストから指定した値の要素を削除する remove()

Pythonでリストから指定した値の要素を削除する場合は、 リストオブジェクトのremove()メソッドを使います。 ここではremove()メソッドの使い方を紹介します。

要素値ではなくインデックスを指定して削除する場合はdel文を使用します。
(関連記事: リストから指定位置の要素を削除する delの使い方

remove()の書式とサンプルコード

書式
リスト.remove(値)

引数に削除したい要素値を1つ指定します。 指定した要素値がリストの中に複数存在する場合は最初の要素を削除します。 存在しない要素値を指定した場合はエラーとなります。

remove()を使ったサンプルコードは次の通りです。

li  = ["a", "b", "c"]

# "a" の要素を削除
li.remove("a")

print(li) # ['b', 'c']

remove()の戻り値は?

remove()メソッドの戻り値は「None」です。 ですから戻り値を取得しても意味がないので通常は 「リスト.remove(値)」と記述します。

一応確認しておきます。

li  = ["a", "b", "c"]

re = li.remove("b")

print(li)  # ['a', 'c']
print(re)  # None

remove()で複数の要素値を指定できる?

remove()で指定できるのは1つの値だけです。 「リスト.remove("a", "b")」のように複数の要素値を指定するとエラーになります。

li  = ["a", "b", "c"]

li.remove("b", "c") # エラー

# 実行結果 エラーメッセージ
TypeError: list.remove() takes exactly one argument (2 given)

「one argument (2 given)」と指摘されます。

指定した要素値が複数ある場合

指定した要素値がリストの中に複数存在する場合は、 最初の要素を削除します。

次のコードは、値が"a"の要素を削除しています。 ですが値が"a"の要素は複数あるため 2番目の"a"の要素は残っています。

li  = ["a", "b", "c", "a", "b", "c"]

# "a" の要素を削除
li.remove("a")

print(li) # ['b', 'c', 'a', 'b', 'c']

指定した値の「すべて」の要素を削除する

指定した値の「すべて」の要素を削除したい場合は いくつか方法がありますが、 while文を使った次の方法がシンプルでわかりやすいと思います。
in演算子を使って「"a" in li」がTrueの間はwhileブロックが実行され、 「"a" in li」がFalseになるとwhileループを抜け出します。

li  = ["a", "b", "c", "a", "b", "c"]

# "a" の要素を全て削除
while "a" in li:
	li.remove("a")

print(li) # ['b', 'c', 'b', 'c']
Python