2012-03-27 7 views
-4

可能性の重複:今除くと共通の要素

A = [1,3,5,7] 
B = [1,2,3,4,5,6,7,8] 

、Aは常にのサブセットです:
Python, compute list difference

は、私は例えば二つのリスト を持っていますB 3番目のリストCを生成したい:あなたは、Pythonを使用している場合

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

は、私が増してお勧めします。

よう
C = [2,4..] 

おかげでBに存在するが、存在しない要素

答えて

2
C = sorted(list(set(B) - set(A))) 

を行うことができます。

+1

'リスト 'の必要はありません。 'sorted'は常にリストを生成します。 –

3

List comprehensionsはこれを行うための一つの方法ですがあります10リスト内包に精通している。彼らは非常に強力なツールです。

(複数の人がsetを使用することを推奨しています)これは、要素がセットに含まれているかどうかを気にする場合は非常に良い考えですが、要素の順序は保持されません。 。)

3

これを行う簡単な方法は、

C = [x for x in B if x not in A] 

これは大きなリストに遅くなりますので、Aためsetを使用する方が良いでしょうです:

A = set(A) 
C = [x for x in B if x not in A] 

このような操作が複数ある場合は、常にセットを使用することをお勧めします。 ABがセットされている場合は、単に

C = B - A 
3
>>> set(B) - set(A) 
set([8, 2, 4, 6]) 

または

それを行う必要があります
>>> sorted(set(B) - set(A)) 
[2, 4, 6, 8] 
関連する問題