Python プログラミングでは、2 つのリストの比較は複数のアプローチによる一般的なタスクです。この記事では、2 つのリスト間の相違点を取得するためのさまざまな方法を検討し、リストの処理とデータ比較の習熟度を高めます。 パイソン 。リスト間の違いを識別するためのさまざまな戦略についての洞察に満ちた旅に参加してください。
例
Input: list1 = [10, 15, 20, 25, 30, 35, 40] list2 = [25, 40, 35] Output: [10, 15, 20, 30] Explanation: resultant list = list1 - list2>
注記: 同じ要素が複数ある場合、これは機能しません。その場合、このコードは同じ要素を単純に削除します。
その場合、両方のリストの各要素の数を維持できます。
Python で 2 つのリストを比較する方法
Python で 2 つのリストを比較するにはさまざまな方法があります。ここでは、Python で 2 つのリストを比較するために一般的に使用されるいくつかの方法について説明します。
- メソッドでの使用
- リスト内包表記の使用
- 使用 セット() 関数
- 使用 ナンピー
- 使用する ジップ() 関数
- を使用して出現回数をカウントします カウンター
Python で 2 つのリストを比較するためのキーワード内の Python
この例では、コードはリスト `li1` 内の要素を反復処理し、リスト `li2` に存在しない場合は各要素を `temp3` に追加します。 `temp3` の最終結果には、`li2` には存在しない `li1` の要素が含まれています。
Python3
li1>=> [>10>,>15>,>20>,>25>,>30>,>35>,>40>]> li2>=> [>25>,>40>,>35>]> temp3>=> []> for> element>in> li1:> >if> element>not> in> li2:> >temp3.append(element)> print>(temp3)> |
>
>
出力
[10, 15, 20, 30]>
リスト内包表記を使用した Python の 2 つのリストの違い
この例のコードでは、リスト「li2」の要素からセット「s」を作成し、セット「s」に存在しないリスト「li1」の要素を含む新しいリスト「temp3」を生成します。最後に、「temp3」の要素を出力します。
Python3
数多の合計
li1>=> [>10>,>15>,>20>,>25>,>30>,>35>,>40>]> li2>=> [>25>,>40>,>35>]> s>=> set>(li2)> temp3>=> [x>for> x>in> li1>if> x>not> in> s]> print>(temp3)> |
>
>
出力
[10, 15, 20, 30]>
Python で set() を使用して 2 つのリストの違いを見つける
この方法では、リストを明示的にセットに変換し、減算演算子を使用して一方を他方から単純に減算します。セットに関する詳細については、こちらをご覧ください Python のセット 。これは以前に使用したのと同様のテクニックです。唯一の違いは、ネストされたループを リストの内包表記 構文。
Python3
アルファベットに番号を付ける
li1>=> [>10>,>15>,>20>,>25>,>30>,>35>,>40>]> li2>=> [>25>,>40>,>35>]> s>=> set>(li2)> temp3>=> [x>for> x>in> li1>if> x>not> in> s]> print>(temp3)> |
>
>
出力
[10, 15, 20, 30]>
Numpy を使用して、 Python で 2 つのリストを比較する
の numpy.concatenate() 関数は、既存の軸に沿って配列のシーケンスを連結します。このサンプル コードでは、NumPy を使用して配列 `li1` と `li2` を作成し、それらの間のセットの違い (`dif1` と `dif2`) を見つけて、これらの違いを 1 つのリスト (`temp3`) に連結し、最後に結果。
Python3
import> numpy as np> li1>=> np.array([>10>,>15>,>20>,>25>,>30>,>35>,>40>])> li2>=> np.array([>25>,>40>,>35>])> dif1>=> np.setdiff1d(li1, li2)> dif2>=> np.setdiff1d(li2, li1)> temp3>=> np.concatenate((dif1, dif2))> print>(>list>(temp3))> |
>
>
出力
[10, 15, 20, 30]>
zip() 関数を使用して Python で 2 つのリストを比較する
この例のコードでは、2 つのリスト li1 と li2 の対応する要素を比較し、要素が等しいかどうかを示すブール値のリストを作成します。 `all` 関数は、結果リスト内のすべての要素が True であるかどうかをチェックします。
Python3
C++ セット
li1>=> [>10>,>15>,>20>]> li2>=> [>25>,>40>,>35>]> result>=> [a>=>=> b>for> a, b>in> zip>(li1, li2)]> print>(>all>(result))> |
>
>
出力
False>
出現回数を使用して 2 つのリストを比較する Counter を使用して
このサンプル コードでは、`collections` モジュールの `Counter` クラスを使用して、2 つのリスト、`li1` と `li2` の頻度カウンターを作成します。次に、カウンタを比較して、リストに同じ頻度の同じ要素があるかどうかを確認し、結果を `are_lists_equal` に割り当てます。
Python3
from> collections>import> Counter> li1>=> [>10>,>15>,>20>,>25>,>30>,>35>,>40>]> li2>=> [>25>,>40>,>35>]> counter1>=> Counter(li1)> counter2>=> Counter(li2)> are_lists_equal>=> counter1>=>=> counter2> print>(are_lists_equal)> |
>
>
出力
False>