38

Python で 2 つのリストを比較する必要があります。このコマンドを使用して同様のアイテムを検索することは知っていsetますが、コードを作成する代わりに、それらを自動的に比較するために使用できる別のコマンドはありますか?

それぞれにないアイテムを見つけていきたいです。リスト1は次のようになります。

[1, 2, 3, 4, 5, 6] 

リスト2は次のとおりです。

[1, 2, 3, 4, 6]

5できればコマンドで、リストにないものを見つけたいのですが、比較をループする方法は知っています。

4

3 に答える 3

62

ドキュメントは、開始するのに適した場所です。セットを比較する方法を決定するのに役立ついくつかの例を次に示します。

交点 (両方のセットに含まれるアイテム) を見つけるには:

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a & b
set([4, 5, 6])

違いを見つけるには (1 セットのみのアイテム):

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a - b
set([1, 2, 3])
>>> b - a
set([7, 8, 9])

対称的な違い (両方ではなくどちらか一方にある項目) を見つけるには:

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a ^ b
set([1, 2, 3, 7, 8, 9])

それが役立つことを願っています。

于 2013-03-16T23:11:02.213 に答える
38

対称的な違いが必要なようです:

a = [1,2,3]
b = [3,4,5]

print(set(a)^set(b))


>>> [1,2,4,5]
于 2013-03-16T23:05:45.017 に答える
5

簡単なリスト内包表記

In [1]: a=[1, 2, 3, 4, 5, 6] 

In [2]: b=[1, 2, 3, 4, 6]

In [3]: [i for i in a if i not in b]
Out[3]: [5]
于 2013-03-16T23:19:01.487 に答える