Python:14日目 – [集合] ~ 和, 差, 積

和, 差, 積を学ぶ

.union()
.difference()
.intersection()
対称差.symmetric_difference()
部分集合かの判定.issubset()

集合では、和集合、差集合、積集合、対称差などそれぞれ数学的な演算処理を行うことができます。

ポイント

和は論理和を表す記号 | 、積は論理積を表す記号 & 、差は – を使って演算します。

 

memo

演算後の結果が集合となる場合は、常に新しいオブジェクトとなります。

では、早速コードを書いていきましょう。

def main():
    union_A = {1, 2, 3} | {2, 3, 4}
    print(union_A)

    intersection_B = {1, 2, 3} & {2, 3, 4}
    print(intersection_B)

    difference_C = {1, 2, 3} - {2, 3, 4}
    print(difference_C)

if __name__ == '__main__':
    main()

このようになっています。

def main():
if __name__ == '__main__':
    main()

は後々コラムでご紹介しますので、今はとにかく写経してみてください。

対称差と部分集合の判定

ポイント

対称差の演算は記号 ^ 、部分集合の判定には <= もしくは >= を使用します。

def main():
    # 集合の対称差
    test_a = {1, 2, 3} ^ {2, 3, 4}
    print(test_a)

    # 左辺の要素がすべて右辺の集合に含まれている
    test_b = {1, 3} <= {1, 2, 3}
    print(test_b)

    # 右辺の要素がすべて左辺の集合に含まれている
    test_c = {4, 5, 6} >= {4, 5}
    print(test_c)

    # 左辺に右辺の集合に存在しない要素が含まれている場合
    test_d = {3, 4} <= {1, 2, 3}
    print(test_d)


if __name__ == '__main__':
    main()

実行結果はこのようになりました。

じっくり頭の中で整理しながらコードを書いていかないと、ぐちゃぐちゃになってしまいますので、どことどこがシェアしているのか?または、シェアしていないのか?しっかり整理しながらテストしていきましょう。

Kotaro
Kotaro
フォトグラファー, サウンドデザイナー, 投機家。
ドイツで制作したピアノアルバムをリリース後「金田式電流伝送DC録音」専門スタジオにアシスタントとして弟子入りし裏方へ。
現在は独立しKotaro Studioで「誰かのためにただここに在る」をテーマにアルゼンチンタンゴとアメリカの古典音楽の歴史を研究しながらコンテンツを制作中。
小学3年生の頃、読書感想文の賞金である図書券で2冊の投資関連の本を購入したのをきっかけに投資に興味を持つ。
当サイトでは金融の歴史も含め関連するデータやスキルもアーカイブしていきます。
左脳を使うのに疲れたらKotaro Studioの音楽コンテンツも是非ご覧ください。