今回は、Pythonでリストから要素を削除するすべてのメソッドについて説明します。
Pythonのリストは、日々のプログラミングで使用される最も基本的なデータ構造です。
この記事では、リストから要素を削除する必要がある状況に出くわし、まさにそれについて説明します。
1. 値に基づいてリストから要素を削除する
Pythonが有名なプログラミング言語である理由の1つは、数多くの組み込み関数が存在することです。
これらの組み込み関数は非常に便利であり、それによってPythonは非常に便利に書けるようになっています。
この記事もチェック:Pythonのsample関数を使ってリストからランダムに要素を抽出する方法
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つ引数として受け取ります。
- もし、与えられた値が複数あった場合、最初のものが削除されます。
- ある要素を削除しても、その位置に空白ができるわけではなく、後続の要素を左に移動するだけです。
- リストの中にそのような要素がない場合、スクリプトはエラーを発生させます。
この記事もチェック:Pythonのリストの最初と最後の要素を取得する方法を解説する
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” エラーが発生します。
この記事もチェック:Pythonのリストで要素のインデックスを取得する方法3つ
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() メソッドの使用法については、完全な記事があります。
この記事もチェック:Pythonでリストから重複する要素を削除する方法6つ
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ではリストから要素を削除する様々な方法を提供しています。
読者が記事を追うのに困難がなかったことを望みます。
このテーマに関する質問があれば、下のコメント欄からお気軽にどうぞ。