Python入門ノート-第五章(元祖tuple,集合set,辞書dict)

9077 ワード

第五章:元祖tuple,集合set,辞書dict
1.元祖—tuple()
  • 秩序
  • はアクセス可能であるが、変更できない(内容が変更できないことを指す)
  • .
  • 元祖データは、(1,2,"abc",'a',[1,2,3])
  • のような任意のタイプであってもよい.
  • リストリストリストリストの使用可能な操作は、修正を除いて、元祖はすべて使用することができて、すなわちインデックス、スライス、加算、乗算などはすべて
  • 通用することができます
    1.1一般的な操作
  • インデックス(Listと同じ)
  • a = (1,2,3,4,5)
    print(a[4])
    print(a[12])  #       
    

    結果:5
             
    

    質問:なぜa=(i for i in range(1,5))で元祖を作成できないのですか?
  • スライス
  • a = (1,2,3,4,5)
    print(a[0:3])
    print(a[0:100])  #      
    
      :
    (1, 2, 3)
    (1, 2, 3, 4, 5)
    
  • 加算、乗算
  • a = (1,2,3,4,5)
    b = (1,2,3)
    c = a + b
    d = a * 3
    
    print(c)
    print(d)
    

    結果:
    (1, 2, 3, 4, 5, 1, 2, 3)
    (1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
    
  • 遍歴(単層)
  • a = (1,2,"aabbcc","ncu","dddaa")
    for i in a:
        print(i)
    

    結果:
    1
    2
    aabbcc
    ncu
    dddaa
    
  • 遍歴(二層)
  • a = ((1,2,3),("aa","bb","cc"),("dd",4,"ee"))
    for i in a:
        print(i)
    for k,v,j in a:
        print(k,v,j)
    

    結果:
    (1, 2, 3)
    ('aa', 'bb', 'cc')
    ('dd', 4, 'ee')
    1 2 3
    aa bb cc
    dd 4 ee
    

    1.2共通関数
  • len、max、min用法はリストリストリストと一致する
  • count、index
  • a = (1,3,5,6,33,55,66,3,3)
    print(a.count(3))
    print(a.index(3))   #          ,       
    
  • 残りのリストリストリストで使用できる関数は、元祖tupleが基本的に
  • で使用できる
    結果:
    3
    1   
    

    1.3元祖は内包操作がない
  • すなわちa=(i for i in range(1,10))
  • 誤報
  • 1.4付属-2つの変数の交換
  • C、JAVA、C++などの言語の書き方とPythonの書き方の違い
  • a = 1
    b = 3
    
    #####C/C++/JAVA  :
    t = a 
    a = b
    b = t
    
    Python   :
    a,b = b,a
    
    

    2.集合—set{}
  • は高校の集合概念と一致し、すなわち無秩序であり、値は唯一
  • である.
  • コレクションが無秩序で、値が一意であるため、インデックス、スライス、countなどの関数
  • は使用できません.
    2.1集合の定義
  • の2つの方法
  • #   
    a = set()
    print(a)
    print(type(a))
    
    #   ,           ,         dict
    a = {1,2,3,4,5,}
    print(a)
    print(type(a))
    
    #          
    a = {}
    print(a)
    print(type(a))
    

    結果:
    set()
    
    {1, 2, 3, 4, 5}
    
    {}
    
    

    2.2集合の特徴
  • 無秩序、すなわちインデックス、スライス、countなどの関数
  • を使用できない.
  • は一意である、この特徴を利用して重複値
  • を排除することができる.
    a = {1,2,3,4,1,1,1,1,1}
    print(a)
    

    結果:
    {1, 2, 3, 4}
    
  • の集合内のデータは、int、str、list、tuple、凍結集合などの
  • のハッシュ可能なデータのみを配置することができる.
    2.3集合の遍歴及び内包
  • セットの遍歴と内包操作はリストリストリストと一致する
  • a = {1,2,3,4,5,66,66,66,77,7,8,6,9,10}
    print(a)
    
    for i in a:
        print(i,end = " ")
    print(" ")
    
    b = {i for i in a if i % 2 == 0}
    print(b,end = " ")
    

    結果:
    {1, 2, 3, 4, 5, 66, 7, 8, 6, 9, 10, 77}
    1 2 3 4 5 66 7 8 6 9 10 77  
    {2, 66, 4, 6, 8, 10} 
    

    2.4集合の関数について
  • len,max,minはリストリストリストとずっと、
  • を繰り返しません.
  • add,clear
  • #add,        
    a = {1,2,3}
    print(id(a))
    
    a.add(123)
    print(id(a))
    print(a)
    
    #clrar,    
    a = {1,2,3}
    print(id(a))
    a.clear()
    print(id(a))
    print(a)
    
      :#    add   clear     
    140431563811976
    140431563811976
    {123, 1, 2, 3}
    140431563812648
    140431563812648
    set()
    
  • pop,remove,discard
  • # pop,   list         ,        ,
    # pop,   set          
    a = {1,2,3,4}
    print(id(a))
    a.pop()
    print(a)
    print(id(a))
    

    結果:
    140431563811976
    {2, 3, 4}
    140431563811976
    
  • 実際のテストでは、複数回実行されますが、関数pop削除要素はランダムではなく、要素1を削除しただけです.pop自体がランダム削除ではないからですか、それともキューピットノートのせいですか.深く究明する必要がある
  • 関数popは、その場操作
  • である.
    #remove,         ,              ,    
    a = {1,2,3,44,55}
    print(id(a))
    a.remove(44)
    
    print(id(a))
    print(a)
    
    #discard,         , remove    ,               ,    
    b = {11,22,33,44,55}
    print(id(b))
    
    b.discard(44)
    print(id(b))
    print(b)
    
    b.discard(66)
    print(id(b))
    print(b)
    
    

    結果:
    140431702354856
    140431702354856
    {1, 2, 3, 55}
    140431554061704
    140431554061704
    {33, 11, 22, 55}
    140431554061704
    {33, 11, 22, 55}
    

    思考:なぜremoveが存在しない値がkeyerrorに報告されるのか.
  • copyは、リストリスト操作と一致し、浅いコピーであり、ここでは
  • を繰り返さない.
    3辞書dict
  • には順序の組み合わせデータがなく、データはキー値対で
  • を呈する.
  • 辞書を作成するには多くの方法があります.一般的には、自分がよく使う(2番目のコロン付き)を選んで、残りの自分が認識できればいい
  • です.
    3.1辞書の作成方法
  • には、
  • という一般的な方法があります.
  • 空の辞書を作成
  • #     1
    a = {}
    print(a)
    #     2
    a = dict()
    print(a)
    

    結果:
    {}
    {}
    
  • 値のある辞書を作成します.一般的には、この方法で辞書を作成します.概要
  • a = {"one":1,"two":2,"three":3}
    print(a)
    

    結果:
    {'one': 1, 'two': 2, 'three': 3}
    
  • dictで値付き辞書1
  • を作成する
    a = dict({"one":1,"two":2,"three":3})
    print(a)
    

    結果:
    {'one': 1, 'two': 2, 'three': 3}
    
  • dictで値付き辞書2を作成し、キーワードパラメータ
  • を利用する.
    a = dict(one=1,two=2,three=3)
    print(a)
    

    結果:
    {'one': 1, 'two': 2, 'three': 3}
    
  • dictで値付き辞書3
  • を作成する
    a = dict([(one,1),(two,2),(three,3)])
    print(a)
    

    結果:
    {'one': 1, 'two': 2, 'three': 3}
    

    3.2辞書の特徴
  • 辞書は無秩序であるため、スライスおよびインデックス操作
  • はない.
  • 辞書のデータは、キー値ペア、すなわちkvから構成されていない.
  • key:int,string,float,tuplleなどのハッシュ可能な値でなければなりませんが、list,set,dictは
  • できません.
  • value:任意の値

  • 3.3辞書の一般的な操作
  • メンバーアクセス
  • #    ,         ,        ""   
    a = {"one":1,"two":2,"three":3}
    print(a["one"])
    
    #    
    a["one"] = "enis"
    print(a)
    
    #    ,      
    del a["one"]
    print(a)
    

    結果:
    1
    {'one': 'enis', 'two': 2, 'three': 3}
    {'two': 2, 'three': 3}
    
  • メンバー検出
  • #    
    a = {"one":1,"two":2,"three":3}
    
    if "two" in a :
        print("key")
    if "2" in a:
        print("value")
    if ("two",2) in a:
        print("kv")
    

    結果:(メンバー検出時にキー値が検出されたことを示す)
    key
    
    
  • 辞書は遍歴して、Python 2とPython 3は異なって、コードは通用しないで、ここでPython 3
  • だけを話します
  • キー値key
  • を巡回
    #  
    a = {"one":1,"two":2,"three":3}
    for k in a:
        print(k,d[k])
    
    

    結果:
    one 1
    two 2
    three 3
    
    
    #            
    a = {"one":1,"two":2,"three":3}
    for k in a.keys():
        print(k,d[k])
    
    

    結果:
    one 1
    two 2
    three 3
    
  • 辞書の値
  • のみにアクセス
    a = {"one":1,"two":2,"three":3}
    
    for v in a.values():
        print(v)
    
      :
    1
    2
    3
    
  • 注意以下の特殊用法
  • a = {"one":1,"two":2,"three":3}
    
    for k,v in a.items():
        print(k,"———",v)
    

    結果:
    one ——— 1
    two ——— 2
    three ——— 3
    

    3.4辞書生成式(辞書内包)
    #
    a = {"one":1,"two":2,"three":3}
    
    aa = {k:v for k,v in a.items()}
    print(aa)
    
    #           
    
    aaa = {k:v for k,v in a.items() if v % 2 == 0}
    print(aaa)
    

    結果:
    {'one': 1, 'two': 2, 'three': 3}{'two': 2}
    

    3.5ディクショナリ関連関数
  • len,max,min,clearなどの汎用関数は
  • を概説しない.
  • str(辞書)、辞書の文字列フォーマット
  • を返します.
    a = {"one":1,"two":2,"three":3}
    print(str(a))
    

    結果:
    {'one': 1, 'two': 2, 'three': 3}
    
  • items,keys,values
  • a = {"one":1,"two":2,"three":3}
    
    #               
    i = a.items()
    print(type(i))
    print(i)
    
    #            
    k = a.keys()
    print(type(k))
    print(k)
    
    #            
    v = a.values()
    print(type(v))
    print(v)
    
    

    結果:
    dict_items([('one', 1), ('two', 2), ('three', 3)])dict_keys(['one', 'two', 'three'])dict_values([1, 2, 3])
    
  • getは、作成キー値に基づいて対応する値を返し、デフォルト値
  • を設定できることが利点である.
    a = {"one": 1, "two": 2, "three": 3}
    #  get    None
    print(d.get("one333"))
    print(d.get("one"))
    
    #    one333     100
    print(d.get("one333",100))
    
    #        a   one333     ,     ,                
    print(d["one333"])
    
    
      :None1100    
    
  • fromkeysは、作成するシーケンスをキーとして使用し、すべてのキーのキー値を1つの値
  • にする.
    a = {"one", "two", "three"}
    
    #     fromkeys       
    #     fromskeys     ,dict
    a = dict.fromkeys(a,"hhhhhhhh")
    print(a)
    

    [画像アップロード中...(image-ece 40-13814146487-0)]
    結果:
    {'two': 'hhhhhhhh', 'three': 'hhhhhhhh', 'one': 'hhhhhhhh'}