1

私は2つのリストの違いを見つけようとしています。基本的に、リスト2にないリスト1にあるすべてのものを知りたいのですが、それを説明する最良の方法は、例を使用することです。

List1 = [a, a, b, c, d, e]
List2 = [a, b, c, d]

In this example, I would like a function that would return [a, e]

Pythonで差分関数を使用すると、「e」のみが返され、リスト1に追加の「a」があるわけではありません。2つのリスト間でXORを使用しただけでは、「e」のみが返されます。

4

2 に答える 2

8

あなたが本当に望むのは、減算を設定することではありません。カウンターを使用できます:

>>> List1 = ['a', 'a', 'b', 'c', 'd', 'e']
>>> List2 = ['a', 'b', 'c', 'd']
>>> import collections
>>> counter = collections.Counter(List1)
>>> counter.subtract(List2)
>>> list(counter.elements())
['a', 'e']
于 2012-08-24T18:23:03.583 に答える
1

List1が の厳密なスーパーセットであると仮定しList2ます:

for i in List2:
    if i in List1:
        List1.remove(i)
# List1 is now ["a", "e"]

List1(インプレースで実行したくない場合は、クローンを作成できます。)

于 2012-08-24T18:22:30.770 に答える