Pythonで配列内の要素を削除する方法は複数あります。本記事では、pop、remove、del、clearといった代表的な方法を紹介しながら、その使い分けについて解説します。実際のコード例も示すので、ぜひ参考にしてください。
配列の要素を削除する方法
pop
popメソッドは、指定したインデックスの要素を取り出しつつ削除します。インデックスを指定しなければ、リストの末尾の要素を削除し、その値を返します。
fruits = ["apple","banana","cherry"]
removed_fruit = fruits.pop() # リストの末尾のcherryを削除して返す
print(removed_fruit) # cherry
print(fruits) # ["apple","banana"]
second_fruit = fruits.pop(1) # インデックス1のbananaを削除して返す
print(second_fruit) # banana
print(fruits) # ["apple"]
リストの範囲を超えたindexを指定するとIndexErrorが発生します。
items = [10,20,30]
# indexが範囲外の場合
# 例:len(items)は3なのでindex3は存在しない
deleted_item = items.pop(3) # IndexError: pop index out of range
remove
removeメソッドは、指定した「値」と一致する最初の要素を削除します。複数の同じ値がある場合は先にマッチした要素のみが削除される点に注意してください。
numbers = [1,2,3,2,4]
numbers.remove(2)
print(numbers) # [1,3,2,4] (最初に見つかった2が削除される)
指定した値がリスト内に存在しないと、ValueErrorが発生します。
fruits = ["apple","banana","cherry"]
fruits.remove("orange") # ValueError: list.remove(x): x not in list
del文
delは、指定したインデックスやスライスにある要素を削除する構文です。削除対象を明示的に指定したい場合に便利ですが、popのように削除した値は取得できません。
colors = ["red","green","blue","yellow"]
del colors[1]
print(colors) # ["red","blue","yellow"]
del colors[1:3] # インデックス1から2までを削除
print(colors) # ["red"]
リスト範囲外のindexを指定するとIndexErrorが発生します。
items = [10,20,30]
del items[5] # IndexError: list assignment index out of range
clear
clearメソッドは、配列内の全要素を削除して空の状態にします。一気に初期化したい場合に便利です。
animals = ["dog","cat","bird"]
animals.clear()
print(animals) # []
使い分け
削除方法を選ぶ際は、次の点を考慮するとスムーズです。
- pop:インデックスを指定しつつ、削除した要素自体を取り出す必要がある場合
- remove:値を指定して要素を削除したい場合(同じ値が複数ある場合は注意)
- del:インデックスやスライスでまとめて削除し、削除した要素は不要な場合
- clear:listを空にしたい場合
使い分けのポイントは「削除した要素の値を参照するか否か」と「削除の条件」をどのように指定するかです。状況に応じて最適な方法を選択しましょう。
まとめ
Pythonで配列(list)の要素を削除する方法は様々ですが、頻繁に使うのはpop、remove、del、clearの4つです。削除した要素を再利用したいならpop、特定の値を削除したいならremove、インデックス指定ならdel、全削除ならclearといった具合に使い分けると便利です。