day-9 set/container

4494 ワード

一.set
1.集合とは
python内蔵コンテナ型データ型.可変(添削サポート)、無秩序(下付き操作はサポートされていません){要素1、要素2、要素3...}要素要件は可変で一意です
set1 = {1, 2, 3, 'abc', 100, (1, 2), 1, 1}
print(set1, type(set1))

空のコレクション:set()
set3 = set()
print(type(set3))   #

2.調査
集合は単独で要素を取り出すことができません.遍歴するしかない
for item in set1:
    print(item)

3.増加
集合add(要素)-指定した要素をコレクションに追加
set2 = {100, 2, 5, 20}
set2.add(200)
print(set2)  #{100,2,5,20,200}
  • 集合update(シーケンス)-シーケンス内の要素(可変)をセット内の
  • に追加します.
    set2.update('abc')
    print(set2)
    
    set2.update({'aa': 11, 'bb': 22, 'a': 100})
    print(set2)
    

    4.削除
    集合remove(要素)-コレクションで指定した要素を削除します.要素にエラーが発生しません.
    set2 = {100, 2, 5, 20}
    set2.remove(100)
    print(set2)      #, 20{2, 5}
    
  • 集合clear()-クリアセット
  • set2.clear()
    print(set2)
    

    5.変更(集合は変更操作をサポートしていない)
    6.数学集合演算(集合応用のポイント)
  • は、関係(>=,<=)、並列()、交差、差分、補完
  • を含む.
  • )含む関係集合1>=集合2-集合1に集合2集合1<=集合2が含まれているか否かを判定集合2に集合1
  • が含まれているか否かを判定する.
    print({100, 2, 3, 200, 300, 400, 1} >= {1, 2, 3})
    
  • 2)並列(|)
  • 集合1|集合2-集合1と集合2の要素を結合して新しい集合(重み付け)
  • を生成する.
    set1 = {1, 2, 3, 4, 5}
    set2 = {1, 2, 3, 8, 9, 10}
    print(set1 | set2)            #{1,2,3,4,5,8,9,10}
    
  • 3)交差(&)集合1&集合2
  • print(set1 & set2)           #{1,2,3}
    

    -4)差分(-)
  • 集合1-集合2-集合1における集合2と共通の要素を除く要素
  • print(set1 - set2)       # { 4, 5}
    

    -5)補完(^)=並列交差
    print(set1 ^ set2)    # {4,5,8,9,10}
    

    7.関連する操作
    # in / not  in
    print(1 in {1, 2, 3})
    
    set()
    print(set([19, 23, 19, 0, 0, 0, 0]))
    

    まとめ:集合の応用は主にデウェイトとデータ集合演算に現れる
    練習:3つのリストで3つの学科の選択科目の学生の名前を表します(1人の学生は同時に複数の科目を選択することができます).
  • は授業の学生を選んで全部で何人の
  • がいることを求めます
  • 最初の学科だけを選んだ人の数と対応する名前を求めます
  • はただ1つの学科の学生の数量と対応する名前の
  • だけを選んだことを求めます
  • はただ2つの学科の学生の数量と対応する名前の
  • だけを選んだことを求めます
  • は3つの学生の数量と対応する名前を選んだことを求めます
  • names1 = ['name1', 'name2', 'name3', 'name4', 'name5', 'name6']
    names2 = ['name1', 'name2', 'name7', 'name8', 'name9', 'name10']
    names3 = ['name2', 'name3', 'name4', 'name7', 'name11', 'name12']
    
    total0 = set(names1) | set(names2) | set(names3)
    print('          :%d' % len(total0))
    
    total = set(names1) - set(names2) - set(names3)
    total = set(names1) - (set(names2) | set(names3))
    print('             :%d,     :%s' % (len(total), str(total)[1:-1]))
    
    total1 = (set(names1) ^ set(names2) ^ set(names3)) - (set(names1) & set(names2) & set(names3))
    print('             :%d,      :%s' % (len(total1), str(total1)[1:-1]))
    
    #      -          -        
    total2 = total0 - total1 - (set(names1) & set(names2) & set(names3))
    print('             :%d,      :%s' % (len(total2), str(total2)[1:-1]))
    
    total3 = set(names1) & set(names2) & set(names3)
    print('            :%d,      :%s' % (len(total3), str(total3)[1:-1]))
    

    二.container
    1.コンテナタイプ:文字列(str)、リスト(list)、元祖(tuple)、辞書(dict)、集合(set)
    2.特徴
  • str:可変、秩序-list:可変、秩序
  • tuple:可変、秩序
  • dict:可変、無秩序-***set:***可変、無秩序
  • 3.値
    1.str:「hsj看護婦の日」,'aat 123'aaa"345','u 3467''u 3 fd 3'%c'%(0 x 4 eff)(pythonの文字列は、単引用符、二引用符または三重引用符であることができる)2.list:[要素1,要素2,...]要素は任意のタイプのデータであってもよく、タイプは一致しなくてもよく、要素は3を繰り返すことができる.tuple:(要素1,要素2,...)要素は任意のタイプのデータであってもよく、タイプは一致しなくてもよく、要素は4を繰り返すことができる.dict: {key1: value1, key2: value2, ...}, keyは可変で、唯一です.valueは任意のタイプのデータであってもよく、タイプが一致しなくてもよく、5を繰り返すことができる.set:{要素1,要素2,...}要素は可変であり、一意である.
    4.増加
    リスト:リスト.append(要素)を最後、リストに追加する.insert(下付き、要素)dict:辞書[key]=値(key値が存在し、修正、存在しない場合に追加)、辞書.setdefault(key,値)(keyが存在しない場合にのみ追加)set:集合.add(要素)
    5.削除
    List:delリスト[下付き]、リスト.pop()リスト.pop(下付き)、リスト.remove(要素)dict:del辞書[key]、辞書.pop(key)set:集合.remove(要素)
    6.変更
    List:リスト[下付き]=新しい値dict:辞書[key]=新しい値
    7.検査
    str:単一(下付き)、スライス、遍歴list:単一(下付き)、スライス、遍歴tuple:単一(下付き)、スライス、遍歴dict:単一(key)、遍歴(遍歴key)set:遍歴
    8.使用
    str:個々の文字データ文字列(数字とブールで表される他のデータを除く)list:同じ意味を持つ複数のデータを保存tuple:複数のデータの値または順序が変更できない場合に***元祖を使用する(特殊な意味を持つ値を除き、曜日のように元祖を容器として使用することは一般的に選択されない)dict:同時に保存した複数のデータを区別する必要がある場合set:他のコンテナのデータを重くしたり、数学の集合演算をしたりする