Pythonで、配列の比較を行って片方にしか無い要素を取得したいという場合、setにすることでそういった比較が行えるようだったので備忘で残しておく。 以下のように配列を作成して、setにして比較をしてやればいい。 なお、set生成時に重複した値は削除される。
a = [1,2,3,5,8,11,1,2]
b = [1,3,5,7,9]
set_a = set(a)
set_b = set(b)
# 重複した値は削除されている
print(set_a)
# 配列「a」にしかない要素を取得
print(set_a - set_b)
# 配列「b」にしかない要素を取得
print(set_b - set_a)
# 和集合(両方の配列の合算)を求める
print(set_a | set_b)
# 積集合(両方の配列に存在している値)を求める
print(set_a & set_b)
blacknon@BS-PUB-DEVELOP:~$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [1,2,3,5,8,11,1,2]
>>> b = [1,3,5,7,9]
>>>
>>> set_a = set(a)
>>> set_b = set(b)
>>>
>>> # 重複した値は削除されている
... print(set_a)
set([1, 2, 3, 5, 8, 11])
>>>
>>> # 配列「a」にしかない要素を取得
... print(set_a - set_b)
set([8, 2, 11])
>>>
>>> # 配列「b」にしかない要素を取得
... print(set_b - set_a)
set([9, 7])
>>>
>>> # 和集合(両方の配列の合算)を求める
... print(set_a | set_b)
set([1, 2, 3, 5, 7, 8, 9, 11])
>>>
>>> # 積集合(両方の配列に存在している値)を求める
... print(set_a & set_b)
set([1, 3, 5])
>>>
blacknon@BS-PUB-DEVELOP:~$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [1,2,3,5,8,11,1,2]
>>> b = [1,3,5,7,9]
>>>
>>> set_a = set(a)
>>> set_b = set(b)
>>>
>>> # 重複した値は削除されている
... print(set_a)
{1, 2, 3, 5, 8, 11}
>>>
>>> # 配列「a」にしかない要素を取得
... print(set_a - set_b)
{8, 2, 11}
>>>
>>> # 配列「b」にしかない要素を取得
... print(set_b - set_a)
{9, 7}
>>>
>>> # 和集合(両方の配列の合算)を求める
... print(set_a | set_b)
{1, 2, 3, 5, 7, 8, 9, 11}
>>>
>>> # 積集合(両方の配列に存在している値)を求める
... print(set_a & set_b)
{1, 3, 5}