-2

私はリストを持っています

List1 = [(12,34),(12,6),(2,4),(1,3),(34,32),(34,6)]

そして別のリスト

List2 = [(12,34),(12,6),(2,4),(1,3),(34,32),(56,12),(78,23),(23,56)]

新しいリストを作成したいのですが、最初の要素を 2 番目の要素と照合します。基本的に2番目のリストを編集します。このリストは次のようになります

List3 = [(56,12),(78,23),(23,56)]
4

1 に答える 1

4

順序/重複が重要でない場合:

>>> A = [(12,34),(12,6),(2,4),(1,3),(34,32),(34,6)]
>>> B = [(12,34),(12,6),(2,4),(1,3),(34,32),(56,12),(78,23),(23,56)]
>>> set(B).difference(A)
set([(78, 23), (56, 12), (23, 56)])

それ以外の場合、順序が重要な場合は、セットのリスト内包チェック メンバーシップ (O(1) 償却メンバーシップ チェック) を使用します。

>>> set_A = set(A)
>>> [x for x in B if x not in set_A]
[(56, 12), (78, 23), (23, 56)]

この簡単な解決策も機能することに注意してください。

>>> [x for x in B if x not in A]
[(56, 12), (78, 23), (23, 56)]

Aチェックするたびに、リスト全体を潜在的にスキャンする必要がありますx not in A

于 2013-04-25T11:57:14.203 に答える