This tutorial, we’ll discover two Pythonic ways to find Difference Between Two Lists.Pythonは、2つのリストの間の差を見つけるためのPythonの方法を発見するでしょう。 方法の1つは Python Set を使うことです。 これはまずリストを集合に変換し、そこからユニークな部分を取得します。
集合を使わない他の方法は、2 つのリストを要素ごとに比較し、ユニークなものを収集します。
ところで、もしあなたがPythonの集合について知らないのであれば、以下のチュートリアルにしたがってください。
Python Set
Pythonic Ways to Find the Difference Between Two Lists
Python Set は2つのリストの差と同様に共通点を識別する最も簡単な方法のように思われます。 そこで、まずそれを調べてから、入れ子ループとリスト内包を使用することにします。
# Test Inputlist_a = list_b =
そして、私たちのソリューションが次のような出力を提供するようにします。
Use set() to find the difference of two lists
この方法では、まず、LIST (list1 と list2) から set() 関数に渡して 2 つの SET (set1 と set2) を導出することにします。 その後、セットの差分演算を行う。
"""Desc: Using set() to find the difference between two lists in Python"""def list_diff(list1, list2): return (list(set(list1) - set(list2))) # Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
以下は、2つのリストの差を求めるサンプルPythonプログラムです。
入れ子ループを使ったset()なし
この方法では、入れ子のFor Loopを使って、最初のリストの各要素と次のリストを比較します。 そして、巡回中に、一致しないすべての項目を新しい (そして空の) リストに追加します。
新しいリストには、最終的に 2 つの与えられたシーケンス間の差分が含まれます。
"""Desc: Nested loop to find the difference between two lists in Python"""def list_diff(list1, list2): out = for ele in list1: if not ele in list2: out.append(ele) return out# Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
上記のプログラムを実行すると、次のような結果が得られます。
set() なし、リスト理解を使用
これは、前回使用したものとほぼ同じテクニックです。 ここでは、ネストされたループをリスト内包構文に置き換えています。
以下の例を参照してください。
"""Desc: List comprehension to find the difference between two lists in Python"""def list_diff(list1, list2): out = return out# Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
上記のプログラムを実行すると、次の結果が表示されるはずです。