4

リストがある場合:

a = [1, 2, 3, 4, 5]
b = [4, 5, 6, 7, 8]

c = a * b

私に与えるべきです:

c = [4, 5]

c = a - b

私に与えるべきです:

c = [1, 2, 3]

これは Python で利用できますか、それとも自分で作成する必要がありますか?

タプルでも同じことができますか?リストを追加するので、リストを使用する可能性がありますが、疑問に思っています。

4

1 に答える 1

13

順序が問題にならない場合は、これに使用できますset。交差と差が実装されています。

>>> a = set([1, 2, 3, 4, 5])
>>> b = set([4, 5, 6, 7, 8])
>>> a.intersection(b)
set([4, 5])
>>> a.difference(b)
set([1, 2, 3])

これらの操作の時間の複雑さの情報は次のとおりです: https://wiki.python.org/moin/TimeComplexity#set。減数の順序によって操作の複雑さが変わることに注意してください。

要素が複数回発生する可能性がある場合 (正式には と呼ばれmultisetます)、以下を使用できますCounter

>>> from collections import Counter
>>> a = Counter([1, 2, 3, 4, 4, 5, 5])
>>> b = Counter([4, 4, 5, 6, 7, 8])
>>> a - b
Counter({1: 1, 2: 1, 3: 1, 5: 1})
>>> a & b
Counter({4: 2, 5: 1})
于 2013-11-24T19:07:08.803 に答える