Python で 2 つのリストに重複する要素を抽出する (set と &)

Python では 2 つの set インスタンス同士で & 演算を行うと、両方のセットに含まれる要素を抽出することができます(積集合)。

s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}
print(s1 & s2)  #=> {3, 4}

リストやタプルにはこのような演算子は実装されていないため、リストやタプル同士でこういった演算を行うには、一度 set オブジェクトに変換する必要があります。

l1 = [1, 2, 3, 4]
l2 = [3, 4, 5, 6]
s1 = set(l1)
s2 = set(l2)
print(s1 & s2)  #=> {3, 4}

重複要素があるかのチェックだけを行いたい場合は、& 演算の結果求められたセットを条件式として評価すれば OK です(Python では空のセットを偽、それ以外のセットを真として扱います)。

if s1 & s2:
    print("重複要素があります")