2016-09-18 8 views
1

私はこれらの2つのリストを持っていますが、他のものから1つを減算する必要がありますが、通常の " - "は動作しませんし、交差部もXOR(^)もありません。私が欲しいものを基本的にタプルの2つのリストを互いに引き離します

A = [(0, 1)] 
B = [(0, 0), (0,1), (0, 2)] 

です:

B - A = [(0, 0), (0, 2)] 

答えて

2

あなたがこの問題を解決するために、リストの内包表記を使用することができますがある場合

[item for item in B if item not in A] 

もっと議論がhere

2

を見つけることができますBAに重複するタプルはありません。bセットとしてそれらを維持し、セットのdifferenceを使用する電子よりよい:

A = [(0, 1)] 
B = [(0, 0), (0,1), (0, 2)] 
diff = set(B) - set(A) # or set(B).difference(A) 
print(diff) 
# {(0, 0), (0, 2)} 

あなたは、両方のセットの間intersectionを見つけるのような他の操作を実行できます。

>>> set(B) & set(A) 
{(0, 1)} 

、あるいはそのsymmetric_differenceを取る:

>>> set(B)^set(A) 
{(0, 0), (0, 2)} 
+0

:必要に応じて一覧表示する

r = set(B)-set(A) 

変換:リスト(R)セットでの作業

は、リスト上の操作「の」実行中に比べて効率的である差異を設定します'あなたが明示的に' A'をセットに変換する必要はありません。なぜなら、それは反復可能であるからです。 –

+0

@JonClementsああ、そのことをよく見て。ありがとう –

関連する問題