Pythonでdel関数やremoveメソッドを使ってリストから要素を削除する方法を解説する

スポンサーリンク

今回は、Pythonでリストから要素を削除するすべてのメソッドについて説明します。

Pythonのリストは、日々のプログラミングで使用される最も基本的なデータ構造です。

この記事では、リストから要素を削除する必要がある状況に出くわし、まさにそれについて説明します。

スポンサーリンク

1. 値に基づいてリストから要素を削除する

Pythonが有名なプログラミング言語である理由の1つは、数多くの組み込み関数が存在することです。

これらの組み込み関数は非常に便利であり、それによってPythonは非常に便利に書けるようになっています。

remove()機能

Python には remove() という関数が組み込まれており、値に基づいて要素を削除することができます

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]
 
# Remove element with value = 1
lis.remove(1)
 
# Printing the list
print(lis)
 
# Remove element with value = 9
lis.remove(9)
 
# Printing the list
print(lis)

OUTPUT

[3, 4, 1, 5, 9, 2, 6, 5]
[3, 4, 1, 5, 2, 6, 5]

ここで注意すべき点は、以下の通りです。

  • remove()`関数は、削除する値を1つ引数として受け取ります。
  • もし、与えられた値が複数あった場合、最初のものが削除されます。
  • ある要素を削除しても、その位置に空白ができるわけではなく、後続の要素を左に移動するだけです。
  • リストの中にそのような要素がない場合、スクリプトはエラーを発生させます。

remove()関数のエラーフリーな使用法

プログラマがリスト上の要素の存在に気づかない場合に、要素を削除する際の エラーを回避する簡単な方法があります。

これは、if条件を使って行います。

# List of integers
lis = [1, 4, 2, 6, 1, 9, 10]
 
# Value to be removed
val = 6
 
# Check if the list contains the value
if val in lis:
 
    # Remove the value from the list
    lis.remove(val)
 
# Printing the list
print(lis)

OUTPUT:

[3, 1, 4, 1, 5, 9, 2, 5]

上記のコードでは、まず削除する前にリスト内に値があるかどうかを確認します。

リスト内の値の出現回数をすべて削除する

前述したように、remove()関数は、ある値の最初の出現を削除するだけです。

そのため、whileループを使用し、すべての値を削除します。

# List of integers
lis = [1, 4, 2, 6, 1, 9, 10]
 
# Value to be removed
val = 1
 
# Run until the list containes the value
while val in lis:
 
    # Remove the value from the list
    lis.remove(val)
 
# Printing the list
print(lis)

OUTPUT:

[3, 4, 5, 9, 2, 6, 5]

以上、remove()`関数の使い方をまとめてみました。

2. インデックスに基づく要素の削除

インデックスに基づいて要素を削除するには、いくつかの方法が考えられます。

早速、一つ一つ見ていきましょう。

delキーワード

del` は Python の強力なツールで、オブジェクト全体を削除するために使用します。

また、与えられたリストから要素を削除するためにも使用できます。

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]
 
# Removing element from the start (index = 0)
del lis[0]
 
# Printing the list
print(lis)
 
# Removing element from the last (index = -1)
del lis[-1]
 
# Printing the list
print(lis)

OUTPUT。

[1, 4, 1, 5, 9, 2, 6, 5]
[1, 4, 1, 5, 9, 2, 6]

上記のスクリプトから得られた考察のいくつかを紹介します。

  • del` はメソッドではありません。これは、その後に置かれたアイテムを削除するステートメントです。
  • 特定のインデックスから要素を削除すると、それが最後のインデックスでない場合、次の値はその特定のインデックスにシフトします。
  • リストの長さ以上のインデックスを指定すると、”out of range” エラーが発生します。

pop()関数

pop()`関数は、その名の通り、指定したインデックスから要素をポップアウトさせる関数です。

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]
 
# Removing the fourth element (index = 3)
lis.pop(3)
 
# Printing the list
print(lis)
 
# Removing the second last element (index = -2)
lis.pop(-2)
 
# Printing the list
print(lis)

OUTPUT

[3, 1, 4, 5, 9, 2, 6, 5]
[3, 1, 4, 5, 9, 2, 5]

pop()`メソッドについて学んだことは、以下の通りです。

  • 引数としてリストのインデックスを受け取ります。
  • 与えられたインデックスに基づいて、リストから要素を削除します。次の要素は左に移動します。
  • バックワード・インデックスをサポートしています。
  • インデックスがリストに存在しない場合、”out of range “エラーを発生させます。

pop() メソッドの使用法については、完全な記事があります。

3. リストからの範囲指定要素の削除

Python には、リストからある範囲の要素を削除する機能があります。

これは del ステートメントで行うことができます。

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]
 
# Removing first and second element
del lis[0:2]
 
# Printing the list
print(lis)
 
# Removing last two elements
del lis[-2:]
 
# Printing the list
print(lis)

OUTPUT

[4, 1, 5, 9, 2, 6, 5]
[4, 1, 5, 9, 2]

この処理を理解するために試してみましょう。

  • リストから複数の要素を順番に削除するには、 del 文に要素の範囲を指定する必要があります。
  • 要素の範囲は、開始インデックスと終了インデックスのどちらか一方、または両方をコロン ':' で区切って指定します。
  • 削除される値には開始インデックスが含まれますが、終了インデックスの値は含まれません。
  • 終了インデックスがない場合、リストの最後までのすべての要素が範囲に含まれます。

4. リストからすべての要素を削除する

Pythonは1行でリスト全体を空にするメソッドを提供します。

# List of integers
lis = [3, 1, 4, 1, 5, 9, 2, 6, 5]
 
# Removing all elements
lis.clear()
 
# Printing the list
print(lis)

OUTPUT

[ ]

この関数が空のリストに適用された場合、何のエラーも発生しません。

まとめ

リストから要素を削除する方法として、値で削除するのか、インデックスで削除するのかは、あなたの裁量に任されています。


状況によって異なるアプローチが必要なため、Pythonではリストから要素を削除する様々な方法を提供しています。

読者が記事を追うのに困難がなかったことを望みます。

このテーマに関する質問があれば、下のコメント欄からお気軽にどうぞ。

タイトルとURLをコピーしました