【Python】配列(リスト)を削除する方法を初心者向けにわかりやすく解説

はじめに

Pythonでデータを扱う際に、配列という言葉をよく見かけるかもしれません。
ただ、Pythonの世界では厳密に言うと“配列”とは呼ばずにリストという構造が広く使われています。
データを追加したり、参照したりするのはわかりやすいイメージがありますが、実際にリストから要素を削除したいときにはどのような方法があるでしょうか。

たとえば、リストに不必要なデータが含まれていると、アプリケーションの処理を複雑にすることがあります。
不要な要素は削除しておくことで、余計なバグを防ぎやすくなるでしょう。

そこで本記事では、Python 配列 削除にフォーカスして、いくつかのメソッドやステートメントを丁寧に解説します。
実務でもリストから要素を除外する場面は多いため、初心者の方でも理解しやすいようにサンプルコードを交えながら紹介していきます。

この記事を読むとわかること

  • Pythonでリストを削除するいくつかの方法と、その使い分け
  • remove()pop()delclear()などの基本的な使い方
  • リスト削除を実務でどのように活用できるかの例
  • 削除時に起こりやすいエラーと対処法

Pythonで配列(リスト)を削除するとは

Pythonでは、配列というよりもリストという構造を使うのが一般的です。
リストとは、複数の要素を順番に格納できる仕組みで、[](角括弧)を使って作ります。
リストの特徴としては、要素を順序通りに管理できることや、追加・削除が比較的簡単に行えることが挙げられます。

削除とは、リスト内に存在する不要な要素を取り除く操作です。
実務でいえば、以下のようなシーンが考えられます。

  • ユーザー入力のデータに誤りや重複があったため、特定の要素を排除したい
  • センサーやログなどを集めたリストから、異常値だけをピックアップして削除したい
  • 取得したデータのうち、一部だけ別リストに移動して残りを削除したい

コード上で不要な要素をきちんと削除することは、バグの低減や処理速度の向上につながります。
これから紹介するメソッドやテクニックを身につけることで、Pythonでのデータ操作の幅がさらに広がるのではないでしょうか。

Pythonで配列(リスト)を扱うシーン

リストはさまざまな業務やアプリケーションで活用されています。
代表的な例としては、ユーザーのコメント一覧をリストで保持し、古いコメントを削除する場合などが挙げられます。

実装面でも、リストの操作は頻繁に行われます。
たとえばウェブスクレイピングでデータを取得した際、余計な文字列や数値が含まれていたら削除が必要かもしれません。
日々の業務では、こうした不要データを取り除いて整理する場面が非常に多いです。

そこで重要になってくるのが、どうやって要素を削除するかです。
Pythonには複数の削除方法がありますが、目的に応じて使い分けるのがポイントだといえます。
次の見出しから、具体的な削除メソッドを順番に見ていきましょう。

要素を削除するメソッドの種類

Pythonのリストから要素を削除するには、大きく分けて以下の手段があります。

  1. remove (value)
  2. pop (index)
  3. del
  4. clear()

これらの中で、remove()pop()はリストオブジェクトが持つメソッドです。
一方、delはステートメントとしてリストの要素を削除することができ、clear()はリストをまとめて空にするために使われます。

remove() で要素を指定削除

remove()は、リストの中にあるを指定して削除します。
引数に削除したい「要素の値」を与えると、先頭から検索して最初に見つかった要素をリストから除去してくれます。

fruits = ["apple", "banana", "cherry", "banana"]
fruits.remove("banana")

print(fruits)
# 結果: ["apple", "cherry", "banana"]

上記の例では、"banana"という文字列を指定して削除しています。
リストにある一番最初の"banana"が削除対象となり、それ以降の要素はそのまま残ります。

実務での活用シーン

  • ユーザーが入力した文字列を取り込んだ後、特定の文字列を排除したい場合
  • ダウンロードしたデータに含まれる不要なタグやワードを取り除く場合

pop() で要素をインデックス指定削除

pop()は、リストの中からインデックスを指定して要素を取り出すメソッドです。
取り出された要素は返り値として取得できるので、削除と同時に値を活用したい場合に便利です。

numbers = [10, 20, 30, 40, 50]
removed_item = numbers.pop(2)

print(removed_item)  # 30
print(numbers)       # [10, 20, 40, 50]

この例では、pop(2)によってインデックス2番目の要素が削除され、削除された要素(30)が変数removed_itemに格納されます。

引数を省略すると、最後尾の要素を削除して返してくれます。

numbers = [10, 20, 30]
last_item = numbers.pop()

print(last_item)  # 30
print(numbers)    # [10, 20]

実務での活用シーン

  • キューやスタックのようなデータ構造を簡易的に実現し、要素を順番に取り出す
  • ファイルの読み込みやメッセージキューなど、先頭や末尾から削除しながら処理したい

del ステートメントで削除

delはPythonのキーワードで、変数自体を削除するだけでなく、リストの特定の要素を削除することも可能です。

users = ["Alice", "Bob", "Charlie", "David"]
del users[1]

print(users)
# 結果: ["Alice", "Charlie", "David"]

このコードでは、インデックス1にある"Bob"を削除しています。
delはメソッドではなくキーワードですので、メソッドチェーンなどはできませんが、シンプルにインデックスを利用した削除が行えます。

また、スライス指定を組み合わせて複数の要素を一度に削除することも可能です。

numbers = [0, 1, 2, 3, 4, 5, 6]
del numbers[2:5]

print(numbers)
# 結果: [0, 1, 5, 6]

numbers[2:5]はインデックス2から4までの要素を対象とするため、2, 3, 4がまとめて削除されます。

実務での活用シーン

  • 連続する範囲の要素を一気に削除してリストを小さくしたい
  • ある条件に合致したデータをまとめて排除したい(後述の複数要素の削除も参照)

clear() で全要素削除

clear()は、リストの中身をすべて削除して空のリストにするメソッドです。

data = [1, 2, 3, 4, 5]
data.clear()

print(data)
# 結果: []

このようにclear()を実行すると、リストの大きさが0になります。
要素をすべてリセットしたいときに役立つ方法です。

実務での活用シーン

  • 一時的に使用したリストの中身をまるごとクリアして、再利用したい場合
  • 大規模データ解析などで不要になった大きなリストを空にしてメモリを節約したい場合

複数要素の削除

複数の要素を一度に削除する方法としては、スライスを使う方法や、特定の条件を満たす要素をまとめて削除するためにリスト内包表記(List Comprehension)を用いる方法があります。

スライスを使う例は先ほど少し触れましたが、連続した範囲の要素を対象にできます。
一方で、リスト内包表記を使うと「必要な要素だけを新しいリストに取り出し、それを元のリストに代入する」という形で削除を行えます。

numbers = [1, -2, 3, -4, 5]
# 負の数を削除し、正の数だけで新しいリストを作りたい場合
numbers = [num for num in numbers if num >= 0]

print(numbers)
# 結果: [1, 3, 5]

このようにすると、条件に合わない要素(ここでは負の数)が実質的に削除されて、正の数だけが新しいリストに残る形になります。
実務ではデータフィルタリングの場面でよく使われるやり方です。

要素が見つからない場合

要素を削除しようとしたときに、もし指定した要素が存在しなかったり、インデックスが範囲外だったりするとエラーが起こります。
このセクションでは、代表的なエラーと対処方法を見てみましょう。

リスト内に指定した値が存在しない状態で remove() を実行すると ValueError が発生します。 また、pop() や del で範囲外のインデックスを指定した場合は IndexError が出るので気をつけましょう。

たとえば、以下のようなコードはエラーになります。

items = ["a", "b", "c"]
items.remove("x")  # ValueError: list.remove(x): x not in list

このエラーを回避するには、削除の前にその値がリスト内に含まれているかどうかチェックすると良いでしょう。
たとえば、if "x" in items: と書くと、「要素が存在する場合だけ削除する」ロジックを組みやすくなります。

応用的な削除テクニック

より実務的な観点では、リストの内容をフィルタリングするときに「削除」と考えることが多いです。
前述したリスト内包表記を使ったやり方は、実務でよく利用される応用テクニックの一つです。

たとえば、以下のようなケースがあります。

  • 数値のリストから奇数だけを削除して偶数だけを残す
  • 文字列のリストから空の文字列を削除して残りだけを保持する
  • 辞書のリストから、あるキーの値が特定の条件を満たさない要素を削除する

このような場面では、1つ1つ要素を削除するメソッドを呼び出すよりも、条件式を使ってまとめてフィルタリングしてしまう方が、コードがわかりやすくなる場合があります。
開発チーム内で読みやすいコードにするためにも、ぜひ押さえておくと良いでしょう。

大きなリストから特定の要素を多数削除する場合は、リスト内包表記で新たに作り直す方法が実装面でわかりやすいことがあります。

まとめ

Pythonでの配列削除は、実際にはリストをいかに削除・フィルタリングするかにフォーカスが置かれます。
リストのデータ削除を適切に行うことで、プログラムの扱いやすさやコードの可読性を高めることができるはずです。

  • remove():指定した値を削除
  • pop():指定したインデックスの要素を取り出して削除
  • del:特定のインデックスやスライス範囲を削除
  • clear():リスト全体を空にする
  • リスト内包表記:条件を指定してまとめて削除(または抽出)

実務で使用する場合は、どの削除方法を使うかによってコードの意図が変わることがあります。
値をベースに削除したいのか、インデックスで管理したいのか、それともまとめてフィルタリングしたいのか。
状況に合わせて正しく選択できれば、開発やデータ処理でのトラブルを減らすことにつながるでしょう。

ぜひ、初心者の方もいろいろな場面で試してみて、リスト操作に慣れておくと良いのではないでしょうか。
ここまでの内容が、Pythonでリストを削除する際の参考になれば幸いです。

Pythonをマスターしよう

この記事で学んだPythonの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。