【Python】delでリスト(List)などの要素を削除する!

Pythonのdelを使用することで、リスト(List)などの要素を削除することができます。

delとは変数やオブジェクトを削除する文であり、リストなどのようなイテレータに使用すると、イテレータに格納されている値を削除することができます。

しかし、イミュータブルであるタプルやインデックスが付与されていないset型に対して使用することはできませんので注意してください。

また、2次元や3次元のような多次元でもdel文を使用して削除することができます。

今回はPythonのdelでリスト(List)などの要素を削除する方法について以下の内容で解説していきます。

⚫︎ リスト(list)の要素を削除する場合
⚫︎ タプル(tuple)の要素を削除する場合
⚫︎ 辞書(dict)の値を削除する場合
⚫︎ set型の値を削除する場合

⚫︎ 2次元リスト(list)の要素を削除する場合
⚫︎ 3次元リスト(list)の要素を取り除く場合

⚫︎ delで削除する範囲を指定する方法

delとは

delとは指定した要素を取り除くことができる構文になります。

delは生成した変数やオブジェクトを廃棄することができますので、定義した変数やオブジェクトが不要になった場合、完全に削除することができます。

リスト(List)などの要素を削除するサンプルコード

リスト(List)などの要素を削除するサンプルコードを紹介します。

リスト(list)の要素を削除する場合

del文はリスト(list)の要素を削除することができます。

出力結果

[‘要素1’, ‘要素2’, ‘要素3’, ‘要素4’, ‘要素5’, ‘要素6’]

・delでリストの要素を削除
[‘要素1’, ‘要素2’, ‘要素4’, ‘要素5’, ‘要素6’]

delによってリストの要素を削除することができます。

その為、sample_listに格納されていた「要素1」が取り除かれて表示されています。

タプル(tuple)の要素を削除する場合

del文はタプル(tuple)の要素を削除することができません。

出力結果

TypeError: ‘tuple’ object doesn’t support item deletion

タプルはイミュータブルな型になりますので、del文ではタプルの要素を削除することができません。

辞書(dict)の値を削除する場合

del文は辞書(dict)の値を削除することができます。

しかし、辞書(dict)に対してdel文を使用する場合はインデックスではなく辞書のキーを指定します。

出力結果

{1: ‘値1’, 2: ‘値2’, 3: ‘値3’, 4: ‘値4’, 5: ‘値5’, 6: ‘値6’}
・delで辞書の要素を削除
{1: ‘値1’, 3: ‘値3’, 4: ‘値4’, 5: ‘値5’, 6: ‘値6’}

{‘A’: ‘値A’, ‘B’: ‘値B’, ‘C’: ‘値C’, ‘D’: ‘値D’, ‘E’: ‘値E’, ‘F’: ‘値F’}
・delで辞書の要素を削除
{‘A’: ‘値A’, ‘B’: ‘値B’, ‘C’: ‘値C’, ‘D’: ‘値D’, ‘E’: ‘値E’}

delによってリストの要素を削除することができます。

その為、sample_listに格納されていた「要素1」が取り除かれて表示されています。

set型の値を削除する場合

del文はset型の値を削除することができません。

出力結果

TypeError: ‘set’ object doesn’t support item deletion

set型はインデックスが付与されていませんので、del文でset型の値を削除することができません。

多次元のリスト(List)などの要素を削除するサンプルコード

del文で多次元のリスト(List)などの要素を削除するサンプルコードをリストを使って紹介します。

2次元リスト(list)の要素を削除する場合

del文を使用して、2次元リスト(list)の要素を取り除いてみます。

出力結果

[[‘要素1’, ‘要素2’], [‘要素3’, ‘要素4’], [‘要素5’, ‘要素6’], [‘要素7’, ‘要素8’]]

・delで2次元リストの要素を取り除く
[[‘要素1’, ‘要素2’], [‘要素5’, ‘要素6’], [‘要素7’, ‘要素8’]]

・delで2次元リスト内の1次元リストの要素を取り除く
[[‘要素1’], [‘要素5’, ‘要素6’], [‘要素7’, ‘要素8’]]

リストの後ろにインデックスを1つ指定すると2次元リストの要素を削除することができますが、インデックスを2つ指定すると2次元リスト内にある1次元リストの要素を削除することができます。

その為、インデックスを1つ指定した場合は「[‘要素3’, ‘要素4’]」が削除され、インデックスを2つ指定した場合は「’要素2’」が削除されています。

3次元リスト(list)の要素を取り除く場合

remove()を使用して、3次元リスト(list)の要素を取り除いてみます。

出力結果

[[[‘要素1’, ‘要素2’], [‘要素3’, ‘要素4’], [‘要素5’, ‘要素6’]], [[‘要素7’, ‘要素8’], [‘要素9’, ‘要素10’], [‘要素11’, ‘要素12’]]]

・delで3次元リストの要素を取り除く
[[[‘要素1’, ‘要素2’], [‘要素3’, ‘要素4’], [‘要素5’, ‘要素6’]]]

・delで3次元リスト内の2次元リストの要素を取り除く
[[[‘要素1’, ‘要素2’], [‘要素5’, ‘要素6’]]]

・delで3次元リスト内の1次元リストの要素を取り除く
[[[‘要素1’, ‘要素2’], [‘要素5’]]]

リストの後ろにインデックスを2つ指定すると3次元リストの要素を削除することができます。

また、インデックスを2つ指定すると3次元リスト内にある2次元リストの要素を削除することができ、インデックスを1つ指定すると3次元リスト内にある1次元リストの要素を削除することができます。

その為、インデックスを1つ指定した場合は「[[‘要素7’, ‘要素8’], [‘要素9’, ‘要素10’], [‘要素11’, ‘要素12’]]」が削除され、インデックスを2つ指定した場合は「[‘要素3’, ‘要素4’]」が削除され、インデックスを1つ指定した場合は「’要素6’」が削除されます。

delで削除する範囲を指定する方法

del文にスライスを使用することでリストの削除する範囲を指定することができます。

その為、del文にカンマを使って複数で指定するよりも簡単にまとめて要素を削除することができます。

出力結果

[‘要素1’, ‘要素2’, ‘要素3’, ‘要素4’, ‘要素5’, ‘要素6’]
・スライスでリストの要素をまとめて取り除く
[‘要素1’, ‘要素6’]

[[‘要素1’, ‘要素2’, ‘要素3’, ‘要素4’], [‘要素5’, ‘要素6’, ‘要素7’, ‘要素8’]]
・スライスで多次元リストの要素をまとめて取り除く
[[‘要素1’, ‘要素2’, ‘要素3’, ‘要素4’], [‘要素8’]]

del文にスライスを使用することでリストの範囲を指定して削除しています。

その為、sample_list1では「’要素2’」と「’要素3’」と「’要素4’」と「’要素5’」が削除され、sample_list2では「’要素5’」と「’要素6’」と「’要素7’」が削除されています。

今回のポイント

delでリスト(list)などの要素を削除

⚫︎ Pythonのdel文でリスト(List)などの要素を削除することができる
(リストと辞書は削除できるが、タプルやset型は削除できない)

⚫︎ del文で辞書(dict)の値を削除する場合はインデックスではなく辞書キーを指定する

⚫︎ del文は2次元や3次元のような多次元のリスト(List)などの要素を削除することができる
(インデックスを指定する)

⚫︎ del文にスライスを使用すると、リストの削除する範囲を指定することができる

関連記事

pop()でリスト(List)の要素を削除する方法についてはこちらをご参考ください。

remove()でリスト(List)の要素を削除する方法についてはこちらをご参考ください。

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

 

フリーランスの案件探し