Python のリストから複数の要素を削除する

Jay Prakash Gupta 2023年1月30日
  1. if...else 制御ステートメントを使用してリストから複数の要素を削除する
  2. Python のリスト内包法を使用してリストから複数の要素を削除する
  3. リストスライスを使用してリストから複数の要素を削除する
  4. for ループを使用してリストから複数の要素を削除する
Python のリストから複数の要素を削除する

Python リストから複数の値を削除するには、リストの実際の値を削除するか、リストから削除する値のインデックスを削除します。if...else 制御ステートメント、リスト内包表記、リストスライス、および for ループを使用して、Python のリストから複数の要素を削除できます。

if...else 制御ステートメントを使用してリストから複数の要素を削除する

if...else 制御ステートメントを使用して、値が特定の条件を満たす場合、Python のリストから複数の値を削除できます。インデックスが特定の条件を満たす場合、要素を削除することもできます。

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]
print("Original list : ", list1)


for ele in list1:
    if (ele % 2) != 0:
        list1.remove(ele)

print("List after deleting all values which are odd : ", list1)

出力:

Original list :  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]
List after removing all the odd values :  [2, 4, 6, 8, 10, 20]

ここに整数のリストがあり、リストから奇数値の要素を削除する必要があります。この場合、すべてのリスト l1 要素をループし、要素の値が奇数の場合は、remove() メソッドを使用してリストから要素を削除します。

Python のリスト内包法を使用してリストから複数の要素を削除する

Python では、リスト内包表記とは、既存のリストから新しいリストを生成するプロセスを指します。リスト内包表記を使用して、リストから複数の要素を削除することもできます。元のリストから削除する値を削除することで、新しいリストを作成できます。

l1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 80, 99]
l2 = [x for x in l1 if x % 2 == 0]

print("Original list : ", l1)
print("List after deleting all the odd values present in List : ", l2)

出力:

Original List :  [2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 80, 99]
List after deleting all the odd values present in List :  [2, 4, 6, 8, 10, 20, 80]

ここでは、リスト l1 からリスト l2 を作成します。このリストには、l1 のすべての偶数値のみが含まれています。つまり、リスト l1 の奇数値をすべて削除することで、既存のリスト l1 から新しいリスト l2 を作成したと言えます。

リストスライスを使用してリストから複数の要素を削除する

リストスライス方法を使用して、リストから複数の要素を削除することもできます。ここで、del メソッドのリストから削除する要素の最初から最後のインデックスまでの要素の範囲を指定できます。

del メソッドで単一のインデックスを使用する代わりに、リストから削除する要素の開始から最後のインデックスまでの値の範囲を使用します。リストから隣接する要素を削除します。リストの Python では、値のインデックスは 0 から始まることに注意する必要があります。

l1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 80, 99]
print("Original list : ", l1)

del l1[2:5]

print("List after removing values at index 2, 3 and 4 : ", l1)

出力:

Original List :  [2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 80, 99]
List after removing values at index 2, 3 and 4 :  [1, 2, 6, 7, 8, 9, 10, 20, 80, 99]

del メソッドを使用して、インデックス 23、および 4 の値をリスト l1 から削除します。

ここで注意すべき重要な点の 1つは、最初のインデックス 2 が包括的であるということです。つまり、リスト 3 のインデックス 2 の要素が削除され、最後のインデックスが排他的な値、つまりリストのインデックス 5 の要素が削除されます。6 は削除されません。

for ループを使用してリストから複数の要素を削除する

for ループを使用して、リストから複数の要素を削除することもできます。

この方法を適用するには、リストから削除する要素のインデックスを保存する必要があります。ただし、要素をランダムに削除すると、インデックスの値が変更されます。私たちの賢明な戦略は、リスト内での位置が大きい要素を削除することです。したがって、他のインデックスの要素の値は変更されません。ここで、リストを降順で並べ替えて、より高いインデックスの要素を最初に削除します。このアプローチのコードを以下に示します。

l1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 80, 99]
print("Original list : ", l1)

indexes_to_be_removed = [0, 2, 5]

for idx in sorted(indexes_to_be_removed, reverse=True):
    del l1[idx]

print("List after removing values at index 0, 2 and 5: ", l1)

出力:

Original List :  [2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 80, 99]
List after removing values at index 0, 2 and 5:  [3, 5, 6, 8, 9, 10, 20, 80, 99]

del メソッドを使用して、インデックス 02、および 5 の値をリスト l1 から削除します。

関連記事 - Python List