Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
リスト.pop() / リスト.remove() / リスト.clear()
リストから要素を削除するメソッドと構文です。インデックス指定・値指定・全削除など目的に応じた方法があります。
構文
# 指定したインデックスの要素を削除して返します(デフォルトは末尾)。 リスト.pop(インデックス=-1) # 値が一致する最初の要素を削除します(戻り値は None)。 リスト.remove(値) # リストの全要素を削除します(戻り値は None)。 リスト.clear() # インデックスや範囲を指定して要素を削除します。 del リスト[インデックス] del リスト[開始:終了]
関数一覧
| メソッド・構文 | 概要 |
|---|---|
| list.pop(i=-1) | インデックス i の要素を削除し、その値を返します。引数を省略すると末尾の要素を削除します。 |
| list.remove(x) | リスト中で最初に一致する値 x の要素を削除します。値が存在しない場合は ValueError が発生します。 |
| list.clear() | リストのすべての要素を削除して空リストにします。del list[:] と同じ効果です。 |
| del list[i] | インデックス i または スライス範囲の要素を削除します。削除した値は返されません。 |
サンプルコード
# pop() で末尾の要素を取り出します(スタックの pop 操作)。
stack = [1, 2, 3, 4, 5]
last = stack.pop()
print(last) # 5
print(stack) # [1, 2, 3, 4]
# pop() にインデックスを指定して任意の要素を取り出します。
first = stack.pop(0)
print(first) # 1
print(stack) # [2, 3, 4]
# スタック(LIFO)の実装例です。
stack = []
stack.append("ページA")
stack.append("ページB")
stack.append("ページC")
print(stack.pop()) # ページC(最後に追加したものが最初に出ます)
# remove() で値を指定して削除します。
fruits = ["りんご", "みかん", "ぶどう", "みかん"]
fruits.remove("みかん") # 最初に見つかった "みかん" を削除します。
print(fruits) # ['りんご', 'ぶどう', 'みかん']
# 存在しない値を remove() で削除しようとすると例外が発生します。
try:
fruits.remove("もも") # リストに存在しないため ValueError が発生します。
except ValueError:
print("もも はリストにありません。")
# del でインデックス指定して削除します。
nums = [10, 20, 30, 40, 50]
del nums[2]
print(nums) # [10, 20, 40, 50]
# del でスライスを使って範囲削除します。
del nums[1:3]
print(nums) # [10, 50]
# clear() で全要素を削除します。
nums.clear()
print(nums) # []
print(len(nums)) # 0
# リスト内包表記でフィルタリング(削除)する方法です。
# 条件に合う要素を除いた新しいリストを作成します。
scores = [55, 80, 45, 92, 60]
passing = [s for s in scores if s >= 60]
print(passing) # [80, 92, 60]
概要
『pop()』は削除した値を返すため、削除と同時に値を使いたい場合に便利です。一方、『remove()』は値を返さずに削除するだけです。『remove()』は値が存在しない場合に ValueError が発生するため、安全のために事前に『in』演算子で存在確認を行うか、try-except で例外を処理してください。
『del』は Python のキーワードで、リストの要素だけでなく変数そのものを削除することもできます。『del my_list』とするとリスト変数そのものが削除されます(『clear()』とは異なります)。
ループ中にリストから要素を削除する場合は注意が必要です。『for』ループ中に『remove()』や『pop()』を使うとインデックスがずれて予期しない動作になります。ループ中の削除には、元のリストのコピー(『list[:]』)を反復するか、『リスト内包表記』で新しいリストを作成する方法が安全です。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。