Python で 2つのリストの違いを取得する

Lakshay Kapoor 2023年1月30日
  1. set.difference() を使用して、Python の 2つのリストの違いを見つける
  2. Python で set.symmetric_difference() を使用して 2つのリストの違いを見つける
  3. キーワード in を使用して、Python の 2つのリストの違いを見つける
  4. NumPy ライブラリを使用して、Python の 2つのリストの違いを見つける
Python で 2つのリストの違いを取得する

リスト、辞書、タプル、配列などのデータ構造に対して実行される操作は多数あります。Python では、これらのデータ構造はほとんどすべてのプログラムで使用されます。これらのデータ構造の 1つは、Python のリストです。Python プログラミングのリストは、1つの変数に複数の項目を格納するのに役立ちます。2つのリストの違いを見つけることは、ほとんどすべてのプログラマーが実行する非常に一般的なタスクです。

このチュートリアルでは、Python で 2つのリストの違いを取得するいくつかの方法を示します。

set.difference() を使用して、Python の 2つのリストの違いを見つける

set() メソッドは、ユーザーが反復可能シーケンスを反復可能シーケンスに変換するのに役立ちます。これはセットとも呼ばれます。反復可能オブジェクトは、リスト、ディクショナリ、またはタプルにすることができます。

set.difference() 関数は、2つのセット間の差を返すために使用されます。この関数は、基本的に 2つのセットの共通要素を削除します。

list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

difference_1 = set(list_1).difference(set(list_2))
difference_2 = set(list_2).difference(set(list_1))

list_difference = list(difference_1.union(difference_2))
print(list_difference)

出力:

[50, 5, 40, 25, 60, 15]

この方法の場合、最初のステップは 2つのリストを 2つの変数に格納することです。set() 関数は、これらのリストをセットに変換するために使用されます。同じステップで、set.difference() 関数を使用して、2つのセットの違いを見つけます。difference_1 変数は、list_2 ではなく list_1 の要素を取得することに注意してください。

difference_2 変数は、list_2 にあり、list_1 にはない要素を取得します。その後、union 関数を使用して、difference_1 変数と difference_2 変数からすべての要素を取得します。さらに、list() 関数を使用して、両方のセットをリストに再度変換します。最後に、結果のリストが出力されます。

Python で set.symmetric_difference() を使用して 2つのリストの違いを見つける

ここでは、set() メソッドを使用して、最初に両方のリストをセットに変換します。

symmetric_difference() メソッドは、最初のセットまたは 2 番目のセットのいずれかにある要素を返すために使用されます。このメソッドは、2つのセットの共通要素のように共通部分を返しません。

list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

set_difference = set(list_1).symmetric_difference(set(list_2))
list_difference = list(set_difference)

print(list_difference)

出力:

[5, 40, 15, 50, 25, 60]

set() メソッドは、リストをセットに変換するためにも使用されます。差を取得した後、set_difference をリストに戻すように、list() 関数を使用して最終セットを取得および変換します。

キーワード in を使用して、Python の 2つのリストの違いを見つける

in キーワードは、要素がリストのように反復可能なシーケンスで存在するかどうかを確認するのに役立ちます。

append() 関数もこのメソッドで使用されます。append() は、既存のリストに要素を追加するために使用されます。新しいリストは作成されませんが、要素を追加して初期リストを変更します。

list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

list_difference = []
for element in list_1:
    if element not in list_2:
        list_difference.append(element)

print(list_difference)

出力:

[5, 15, 25]

この方法では、最初に、ゼロ要素で出力する必要がある最終リストを初期化します。次に、for ループを使用して、最初のリストである list_1 から反復を開始します。その後、キーワード not in を使用して、要素が 2 番目のリストにあるかどうかを確認します。

最後に、append() メソッドを使用して、2 番目のリストにない要素を最初のリスト(つまり、list_difference)に追加します。ただし、このメソッドの欠点は、2 番目のリストから要素が返されないことです。

この方法を簡単にするには、リスト内包表記を使用します。リスト内包表記は、既存のリストの要素を使用して新しいリストを作成するのに役立つメソッドです。

list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

list_difference = [element for element in list_1 if element not in list_2]

print(list_difference)

出力:

[5, 15, 25]

NumPy ライブラリを使用して、Python の 2つのリストの違いを見つける

Python の NumPy ライブラリは、非常に一般的に使用されるライブラリです。このライブラリは、ユーザーが配列、行列、線形代数でタスクを実行するのに役立ちます。

このメソッドでは、NumPy ライブラリの 3つの関数を使用して、2つのリストの違いを取得します。これらの 3つの関数は、np.array()np.setdiff1d()、および np.concatenate() です。

配列は、NumPy ライブラリの主要なデータ構造です。np.array() 関数は、配列の作成を支援し、それらの操作を支援します。

np.setdiff1d() 関数は、2つの配列間のセットの差を見つけ、2 番目の配列ではなく最初の配列にある値を返すのに役立ちます。

np.concatenate 関数は、2つ以上の NumPy 配列を組み合わせるために使用されます。以下の例を確認してください。

import numpy as np

list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

array_1 = np.array(list_1)
array_2 = np.array(list_2)

difference_1 = np.setdiff1d(array_1, array_2)
difference_2 = np.setdiff1d(array_2, array_1)

list_difference = np.concatenate((difference_1, difference_2))
print(list(list_difference))

出力:

[5, 15, 25, 40, 50, 60]
著者: Lakshay Kapoor
Lakshay Kapoor avatar Lakshay Kapoor avatar

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

LinkedIn

関連記事 - Python List