python学習ノート2.6-セット(set)


一般的にpythonでよく使われるデータ構造は、リスト(list)、辞書(Dict)、メタグループ(tuple)です.しかし、集合(set)という別の構造もよく見られます.個人的には、辞書(dict)は特殊な集合(set)であり、その特殊な場所は集合の要素の間に一対一の対応関係があると考えている.コレクションは、定義的には無秩序で重複しない要素セットであり、setには複数のデータ型(リスト、コレクション、辞書、メタグループ)であってもよい.集合は無秩序なので、下付きでアクセスできないことに注意してください.
## 1. コレクションの作成
m = [1,2,9,6,3,4,6,7,8,7,6,4]
a = set(m)
print(a)

    :
{1, 2, 3, 4, 6, 7, 8, 9}

##2集合の操作(sは集合を表す)-2.1 s.add(x)は要素xを集合sに追加し、繰り返すと何もしない
m = [1,2,9,6,3,4,6,7,8,7,6,4]
s = set(m)
s.add(7)
print(s)
s.add(10)
print(s)

    :
{1, 2, 3, 4, 6, 7, 8, 9}
{1, 2, 3, 4, 6, 7, 8, 9, 10}
  • 2.2 update(x)は、集合xを元の集合sに組み込む.xはリスト、メタグループ、辞書などであってもよく、xは複数あり、カンマで
  • を分けることができる.
    m = [1,2,9,6,3,4,6,7,8,7,6,4]
    s = set(m)
    x = {11,5,45}
    s.update(x)
    print(s)
    
        :
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 45}
  • 2.3 s.discard(x)はxを集合sから除去し、xが存在しなければエラー
  • は発生しない.
    m = [1,2,9,6,3,4,6,7,8,7,6,4]
    s = set(m)
    s.discard(5)
    s.discard(77)
    print(s)
    
        :
    {1, 2, 3, 4, 6, 7, 8, 9}
  • 2.4 remove(x)はxを集合sから除去し、xが存在しないとエラー
  • を引き起こす.
    m = [1,2,9,6,3,4,6,7,8,7,6,4]
    s = set(m)
    s.remove(4)
    print(s)
    s.remove(5)
    print(s)
    
        :
    {1, 2, 3, 6, 7, 8, 9}
    Traceback (most recent call last):
      File "D:/home/temp/temp_set.py", line 5, in 
        s.remove(5)
    KeyError: 5

    discardとremoveの違いがわかります.
  • 2.5 pop()はランダムに削除され、集合sの値(この機能は少しおかしい)
  • に戻る.
    m = [1,2,9,6,3,4,6,7,8,7,6,4]
    s = set(m)
    s.pop()
    print(s)
    s.pop()
    print(s)
  • 2.6その他の基本操作:
  •     clear():    
        in  
        union( x )   s   x   ,      s,x       ,  ,  。
        intersection( x )   s   x   ,   s, x       ,  ,  。
        difference( x )     s       x        ,     s, x       ,  ,  。
        s.symmetric_difference( x )   s   x     ,               ,     s, x       ,  ,  。
        s.issubset( x )      s       x   
        s.issuperset( x )      x      s