7.5データ構造の集合

21617 ワード

7.5集合
  • 7.5.1フォーマットの作成:
  • 7.5.2常用機能
  • 7.5.3集合の一般的な方法

  • 集合(set)は、1つまたは複数の形態の異なる大きさの全体からなり、集合を構成する物事またはオブジェクトを要素またはメンバーと呼ぶ.
    基本的な機能は、メンバー関係のテストと重複要素の削除です.
    カッコ{}またはset()関数を使用してコレクションを作成できます.空のコレクションを作成するには、{}ではなくset()を使用する必要があります.なぜなら、{}は空の辞書を作成するために使用されるためです.
    7.5.1フォーマットの作成:
    parame={value 1,value 2,...}またはset(value)
    7.5.2常用機能
    #  set
    empty_set = set()
    print(empty_set)
    
    set1 = {
         'a', 'b', 'c', 'b', 'a'}
    
    print(set1)
    #   :{'b', 'c', 'e', 'd', 'a'} ,           
    
    #     
    if 'a' in set1:
        print('a in set1')
    else:
        print('a is not in set1')
    #   :a in set1
    
    
    #     
    set2 = set('abcdefg')
    set3 = set("qwertyuasd")
    
    print(set2)
    #   :{'b', 'g', 'c', 'e', 'f', 'd', 'a'}
    
    # set2   set3    
    print(set2 - set3)
    #   :{'f', 'b', 'g', 'c'}
    
    # set2   set3    
    print(set2 | set3)
    #   :{'b', 'w', 'g', 'q', 'e', 'f', 'd', 'u', 'y', 'r', 't', 'c', 'a', 's'}
    
    # set2   set3    
    print(set2 & set3)
    #   :{'e', 'd', 'a'}
    
    # set2   set3          
    print(set2 ^ set3)
    #   :{'r', 'b', 't', 'g', 'q', 'c', 'f', 'w', 'u', 's', 'y'}
    

    7.5.3集合の常用方法
    集合はsetクラスで表され、dir(set)を使用して、クラスに含まれるメソッドを表示できます.[‘add’, ‘clear’, ‘copy’, ‘difference’, ‘difference_update’, ‘discard’, ‘intersection’, ‘intersection_update’, ‘isdisjoint’, ‘issubset’, ‘issuperset’, ‘pop’, ‘remove’, ‘symmetric_difference’, ‘symmetric_difference_update’, ‘union’, ‘update’]
    #       
    set3.add('e')
    print('      add:', set3)
    #   :{'e', 'c', 'a', 'b'}
    
    #       
    set3.update('1', '2', '3')
    print('      update:', set3)
    #   :{'c', '3', 'a', '1', '2', 'b', 'e'}
    
    #       ,       ,  
    set3.remove('e')
    print('      remove:', set3)
    #   :      remove: {'c', '3', '1', 'b', '2', 'a'}
    
    #       ,       ,   
    set3.discard('1')
    print('      discard:', set3)
    #   :      discard: {'c', '3', 'b', '2', 'a'}
    
    #            
    print('           pop', set3.pop())
    #   :           pop b
    print(set3)
    #   :{'3', '2', 'c', 'a'}
    
    #   
    # intersection()                  ;     print()  ,        ;
    # intersection_update()                 ,     。      print()  ;        ;
    print('  ', set2.intersection(set4))
    #   :{'c', 'd'}
    print(set4.intersection(set2))
    #   :{'c', 'd'}
    print(set2, set4)
    #   :{'c', 'a', 'b', 'd'} {'c', 'd', 'e', 'f', 'g'}
    #
    set2.intersection_update(set4)
    print(set2)
    #   :{'c', 'd'}
    set2 = set(set1)
    set5 = set4.copy()
    # set5 = set4  copy
    set5.intersection_update(set2)
    print(set5)
    #   :{'c', 'd'}
    print("set4", set4)
    #   :set4 {'f', 'c', 'd', 'e', 'g'}
    
    #   :difference   difference_update
    # difference()                  ;     print()  ,        ;
    # difference_update()                 ,     。      print()  ;       ;
    print(set2, set4)
    #   :{'a', 'b', 'd', 'c'} {'d', 'e', 'c', 'g', 'f'}
    print(set2.difference(set4))
    #   :{'b', 'a'}
    print(set4.difference(set2))
    #   :{'f', 'g', 'e'}
    #
    print('difference_update', set2, set4)
    #   :{'c', 'z', 'b', 'a', 'd'} {'c', 'g', 'f', 'e', 'd'}
    set2.difference_update(set4)
    print(set2)
    #   :{'a', 'b'}
    set2 = set(set1)
    set6 = set4.copy()
    set6.difference_update(set2)
    print(set6)
    #   :{'e', 'g', 'f'}
    
    # symmetric_difference   symmetric_difference_update
    #            ,                   
    print('set2 set4', set2, set4)
    #   :set2 set4 {'a', 'b', 'c', 'd'} {'c', 'f', 'e', 'd', 'g'}
    print('symmetric_difference', set2.symmetric_difference(set4), set4.symmetric_difference(set2))
    #   :{'g', 'e', 'a', 'f', 'b'}
    print('set2 set4', set2, set4)
    #   :set2 set4 {'a', 'b', 'c', 'd'} {'c', 'f', 'e', 'd', 'g'}
    #
    set7 = set2.copy()
    set8 = set4.copy()
    print('set7 set8', set7, set8)
    #   :set7 set8 {'a', 'd', 'b', 'c'} {'e', 'c', 'd', 'g', 'f'}
    set7.symmetric_difference_update(set4)
    set8.symmetric_difference_update(set2)
    print('symmetric_difference_update set7 set8', set7, set8)
    #   :symmetric_difference_update set7 set8 {'e', 'a', 'g', 'f', 'b'} {'e', 'a', 'g', 'b', 'f'}
    
    # union:             ,    
    print('set2 set4', set2, set4)
    #   :set2 set4 {'a', 'b', 'c', 'd'} {'c', 'f', 'e', 'd', 'g'}
    print('union', set2.union(set4))
    #   :union {'e', 'a', 'f', 'c', 'd', 'g', 'b'}
    
    
    #  copy
    set5 = set2.copy()
    print('set5:', set5)
    #   :{'b', 'd', 'a', 'c'}
    set2.add('z')
    print(set2, set5)
    #   :{'z', 'a', 'd', 'c', 'b'} {'c', 'b', 'a', 'd'}
    
    #            True
    print(set2, set4)
    #   :{'b', 'c', 'a', 'z', 'd'} {'e', 'c', 'g', 'f', 'd'}
    print(set2.isdisjoint(set4))
    #   :False
    
    #     
    set3 = {
         'a', 'b', 'c'}
    print('set2 set3', set2, set3)
    #   :set2 set3 {'c', 'b', 'z', 'a', 'd'} {'b', 'c', 'a'}
    print('issubset', set3.issubset(set2))
    #   :issubset True
    
    #     
    print('issuperset', set2.issuperset(set3))
    #   :issuperset True
    
    #       
    set4.clear()
    print(set4, type(set4))
    #   :set()