web-dev-qa-db-ja.com

Python-「set」を使用してリスト内のさまざまなアイテムを検索します

Pythonで2つのリストを比較する必要があり、setコマンドを使用して類似のアイテムを見つけることは知っていますが、コードを作成する代わりに、自動的に比較する別のコマンドを使用できますか?

それぞれにないアイテムを見つけたいです。リスト1は次のとおりです。

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

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

[1, 2, 3, 4, 6]

5がリストにありませんが、できればコマンドが必要ですが、比較をループする方法は知っています。

38
RPiAwesomeness

対称差が必要なようです:

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

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


>>> [1,2,4,5]
35
tifon

docs は、開始するのに適した場所です。以下に、セットの比較方法を決定するのに役立ついくつかの例を示します。

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

>>> 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])

お役に立てば幸いです。

59
Seth

単純なリストの理解

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]
5
Fredrik Pihl