セット

セットは要素の重複がないコンテナで、要素の順序もない。set関数にリストを渡して生成する。


    set関数

    リスト = ['Python', 'Python', 'HTML', 'Java']
    セット = set(リスト) # リストからセットを生成
    print(セット) # {'HTML', 'Java', 'Python'} (実行ごとに順序が変わることも)

    セットどうしの演算

    セットどうしで差分を取る(違いを調べる)などの演算ができる。

    セットどうしの演算
    記号 意味
    - a - b bにはないaの要素
    | a | b aまたはbの要素
    & a & b aとbのどちらにもある要素
    ^ a ^ b aとbの片方にだけある要素

    セット1 = set(['Python', 'HTML', 'Java'])
    セット2 = set(['Python', 'Ruby'])
    print(セット1 - セット2) # {'Java', 'HTML'}
    print(セット1 | セット2) # {'Java', 'HTML', 'Ruby', 'Python'}
    print(セット1 & セット2) # {'Python'}
    print(セット1 ^ セット2) # {'Java', 'HTML', 'Ruby'}

    ある要素がセットに含まれているか確認

    ある要素がセットに含まれているか確認するには、要素 in セット要素 not in セットを使う。

    セット = set(['Python', 'Java'])
    print('Python' in セット) # True
    print('Python' not in セット) # False

    セット要素の追加: addメソッド

    セットに要素を追加するには、addメソッド。

    セット = set(['Python', 'Java'])
    セット.add('Ruby')
    print(セット) # {'Python', 'Java', 'Ruby'}

    セット要素の削除: removeメソッド

    セットに要素を削除するには、removeメソッド。

    セット = set(['Python', 'Java'])
    セット.remove('Python')
    print(セット) # {'Java'}

    セットの繰り返し処理

    セットの要素を順次処理していくには、リストと同様for文を使う。

    リスト = ['Python', 'Python', 'HTML', 'Java']
    セット = set(リスト) # リストからセットを生成
    for 要素 in セット:
      print(要素)
    リスト = ['Python', 'Python', 'HTML', 'Java']
    セット = set(リスト) # リストからセットを生成
    for インデックス, 要素 in enumerate(セット):
      print(インデックス, 要素)

    セットの要素は順序が保証されていないので、これらの出力はバラバラ。