Pythonリストの要素削除を徹底解説!del・remove・popの違いと使い分け
Pythonでプログラムを書く際、コードの行数に関わらず、リストから要素を削除したい場面は頻繁に訪れます。そのときに悩むのが、remove()、del、pop() の3つの方法のうち、どれを使えばよいのかという点です。
この記事では、それぞれの違いと使いどころを具体例とともにわかりやすく解説します。
1. remove() — 「値」を指定して削除する
remove() は、特定のインデックスではなく、最初に一致した値(オブジェクト)を削除します。書き方は list.remove(value) の形式です。
使用例
list = [10, 20, 30, 40] list.remove(30) print(list)
実行結果
[10, 20, 40]
なお、同じ値が複数存在する場合は最初の1つだけが削除され、存在しない値を指定すると ValueError が発生する点に注意しましょう。
2. del — インデックスを指定して削除する
del はPythonのステートメントであり、指定したインデックス位置にある要素を削除します。書き方は del list[index] の形式です。
使用例
list = [10, 20, 30, 40, 55] del list[1] print(list)
実行結果
[10, 30, 40, 55]
del の特徴として、スライスを使った複数要素の一括削除(例:del list[1:3])や、リスト自体を丸ごと削除することも可能です。
3. pop() — インデックスを指定して削除し、値を返す
pop() は、指定したインデックスの要素を削除すると同時に、その値を戻り値として返します。書き方は list.pop(index) の形式です。
使用例
list = [100, 300, 400, 550] removed = list.pop(1) print(list) print(removed)
実行結果
[100, 400, 550] 300
引数を省略すると、デフォルトで末尾の要素が削除され、その値が返されます。スタック構造を実装する際によく使われる手法です。
3つの違いの比較まとめ
| メソッド | 指定方法 | 戻り値 | 主な用途 |
|---|---|---|---|
| remove() | 値 | なし | 特定の値そのものを削除したいとき |
| del | インデックス/スライス | なし | 位置を指定して削除したいとき |
| pop() | インデックス | 削除した値 | 削除しながら値も利用したいとき |
まとめ
「値で消すなら remove()」「位置で消すだけなら del」「位置で消して値も受け取るなら pop()」というように、目的に応じて使い分けることで、より読みやすく効率的なPythonコードが書けます。それぞれの挙動の違いを理解しておくことは、バグの防止にもつながるので、ぜひ押さえておきましょう。
-
C#の配列とリスト(List)の違いとは?特徴と基本的な使い方を解説
C#における配列(Array)とリスト(List<T>)は、どちらも複数のデータをまとめて扱うためのコレクションですが、その性質には重要な違いがあります。 配列とリストの主な違い 配列は、生成時にサイズが固定される、同じ型の要素を順番に格納するコレクションです。一度作成した後は要素数を変更できません。 一方、Listはジェネリックコレクションであり、要素の追加や削除に応じてサイズが自動的に拡張・縮小します。この柔軟性が最大の特徴です。 項目配列List<T> サイズ固定可変(動的) 要素の追加不可(再作成が必要)Addメソッドで可能 宣言方法型[] 変数名Lis
-
Pythonのtkinterとtkinter.ttkウィジェットの違いとは?スタイリング方法を解説
tkinter.ttkは、tkinterウィジェットのスタイル(見た目)を設定するためのモジュールです。HTML要素にCSSでデザインを適用するように、tkinter.ttkを使うことでtkinterウィジェットの外観を自由にカスタマイズできます。 tkinterウィジェットとtkinter.ttkの主な違い tkinterウィジェットは、ボタン・ラベル・テキスト・スクロールバーなど、基本的なGUI部品を追加するために使用します。一方、tkinter.ttkは標準のtkinterよりも多くの種類のウィジェットをサポートしています。 tkinter.ttkではPlaceやPack()、Grid