day 08-日常メモ(元祖、辞書、集合およびその関連操作)

14875 ワード

元祖
1.元祖(tuple)とは
pythonが提供するコンテナ型データ型は、可変で秩序がある.(元祖は可変リスト)
  • 可変-追加削除はサポートされず、検索
  • のみをサポート
  • 秩序-各要素は、決定された下付き
  • に対応する.
    2.字面量と要素( 1, 2, 3...)
    要素は任意のタイプのデータであってもよく、タイプは異なり、同じ要素が複数存在してもよい.
    例:
    point = (100, 30)
    print(point, type(point)) # (100, 30) 
    

    注意:
  • 空の元祖:()
    tuple1 = ()
    print(type(tuple1)) #  
    
  • 元素のみの元祖
    tuple2 = (100,)
    print(tuple2, type(tuple2)) # (100) 
    
  • は、複数の要素をカンマで直接区切り、カッコを付けずに表すのも元祖
    tuple3 = 1, 2, 3
    print(tuple3, type(tuple3))  # (1,2,3) 
    
  • です.
    3.要素の取得
    元祖取得要素はリストと同じです
  • 単一要素
  • を取得
    tuple4 = ('  ', '  ', '  ', '  ', '  ')
    print(tuple4[1], tuple4[-1])    # '  ' '  '
    
    
  • 取得部
  • print(tuple4[0:3])  #         
    print(tuple4[::-1])
    
  • を巡る
    #       
    for city in tuple4:
        print(city)
    
    #       
    for index in range(len(tuple4)):
        print(tuple4[index])
    

    補足:特殊な取得方法
  • 変数1、変数2...=「元祖」--前の変数で元祖要素の値を順次取得します.(前の変数の個数と元祖要素の個数が一致することが要求される)
  • point = (100, 200, 10)
    x, y, z = point    # x,y = (100, 200)  <==> x, y = 100, 200
    print(x, y, z)
    
  • 変数1、変数2=元祖--帯の変数によって元祖の残りの部分を取得する.

  • 注意:この構造では*付きの変数は1つしかありません.*なしの変数は複数あります.
    name, *scores = ('  ', 100, 89, 67, 99)
    print(name, scores) #    [100, 89, 67, 99]
    
    name, num, *scores = ('  ', 100, 89, 67, 99)
    print(name, num, scores) #    100 [89, 67, 99]
    
    *info, num1, num2 = ('  ', 100, 89, 67, 99)
    print(info, num1, num2) # ['  ', 100, 89] 67 99
    
    info1, *nums, num1 = ('  ', 100, 89, 67, 99)
    print(nums) # [100, 89, 67]
    

    補足:*の使い方
  • 元祖とリストのデータ
  • を取得する
    nums = (1, 2, 3)
    nums2 = [11, 22, 33]
    print(*nums, *nums2) # 1 2 3 11 22 33
    

    4.関連演算(リストと同じ)
  • +,*
  • in/not in
  • len(), max(), min(), sum(), tuple()

  • 例:
    tuple1 = (1, 2, 3)
    tuple2 = ('aa', 'bb')
    print(tuple1 + tuple2)  # (1, 2, 3, 'aa', 'bb')
    print(tuple1*3) # (1, 2, 3, 1, 2, 3, 1, 2, 3)
    
    print('aaa' in tuple2)  # False
    

    5.ソート
  • sorted(シーケンス)-シーケンス内の要素をソートし、新しいリスト(シーケンスにかかわらず、最後にリスト)
  • を生成します.
    注:リスト.sort()--元のリストの要素の順序を変更します.「sorted(リスト)」--新しいリストを生成します.
    例:
    nums = (1, 34, 89, 9)
    new_nums = sorted(nums, reverse=True)
    print(new_nums, tuple(new_nums),nums) # [89, 34, 9, 1] (89, 34, 9, 1) (1, 34, 89, 9)
    
    new_strs = sorted('skjhabssnssalewz')
    print(str(new_strs), ''.join(new_strs)) # ['a', 'a', 'b', 'e', 'h', 'j', 'k', 'l', 'n', 's', 's', 's', 's', 's', 'w', 'z'] aabehjklnssssswz
    

    joinの使用
    文字列join(シーケンス)-シーケンス内の要素を取り出し、指定した文字列で接続します.要求シーケンスの要素は文字列でなければなりません
    例:
    new_str = ''.join(['aks', 'bos', 'cous'])
    print(new_str, type(new_str))   # aksboscous 
    
    
    list1 = [1, 345, 90, 9]
    new_list = list1.sort()    # None; sort        
    print(list1, new_list)     # [1, 9, 90, 345] None
    

    辞書
    1.辞書とは
    pythonが提供するコンテナ型データ型、可変かつ無秩序
  • 可変-サポート要素の追加削除
  • 無秩序-下付き
  • はサポートされていません.
    2.字面量と要素
    括弧で囲んで、中には複数のキー値のペアがあり、各キー値のペアはカンマで区切られています.キー値ペアは辞書の要素です.{key1:value1, key2:value2, key3:value3...}
  • キー値ペア-キー/key:値/value(キー値ペア);キー値ペアはペアで表示する必要があり、辞書から離れて単独で表示する意味がない
  • キー/key-可変であり、一意である必要があります.実際には、文字列はキー
  • として一般的に使用される.
  • 値/value-任意のタイプのデータ
  • 注意:辞書にはデータが格納され、実質的には値によって格納されます.keyは値に対応するラベルと値を取得する方法です
    例:
    dict1 = {}    #    
    print(type(dict1))  # 
    
    dict1 = {'a': 100, 10: 200, (1, 2): 'abc', 'a': 111, 'a': [1, 11, 111]}
    print(dict1)   # {'a': [1, 11, 111], 10: 200, (1, 2): 'abc'}, key  
    
    # dict2 = {[1, 2]: 120}   # TypeError: unhashable type: 'list'
    
    

    3.辞書やリストを使う場合
    モード
    環境
    辞書
    同じ意味のない複数のデータ(区別が必要)は、辞書を使用します.例えば、1人の異なる情報、1台の車の異なる情報を保存します.
    リスト#リスト#
    格納されている複数のデータが同じ意味を持つデータ(区別する必要はありません)であれば、リストを使用します.たとえば、クラスの学生情報を保存し、すべての価格を保存します.
    例:
    person = ['xiaohua', 18, 'girl', 160, 90, 89]
    print(person[1])    # 18
    
    person = {'name': 'xiaohua', 'age': 18, 'sex': 'girl', 'height': 160, 'weight': 90, 'score': 89}
    print(person['age']) # 18
    

    練習:変数を宣言してクラスの学生情報(4人の学生)を保存し、学生ごとに名前、電話、年齢を保存する必要があります.
    all_students = [
        {'name': '  ', 'tel': '23897823', 'age': 20},
        {'name': '  ', 'tel': '238722111', 'age': 28},
        {'name': '  ', 'tel': '2111111222', 'age': 18},
        {'name': 'xiaohua', 'tel': '111228233', 'age': 30}
    ]
    print(all_students[0]) # {'name': '  ', 'tel': '23897823', 'age': 20}
    

    辞書の操作
    1.辞書要素の添削
  • (取得値)注意:辞書のキー値は単独で持ち出すことに意味がありません
  • a.辞書[key]-辞書のkey対応値を取得注意:keyが存在しない場合、KeyError
    car = {'color': '  ', 'type': '  ', 'price': 500000}
    print(car['color']) #   
    print(car['price']) # 500000
    # print(car['speed'])  # KeyError: 'speed'
    
  • と報告されます.
  • b.辞書get(key)-辞書のkey対応値を取得する注意:keyが存在しない場合、エラーは報告されず、デフォルト値None辞書に取得されます.get(key,値1)-辞書のkey対応値を取得します.keyが存在しない場合はエラーは報告されず、指定された値1
    car = {'color': '  ', 'type': '  ', 'price': 500000}
    print(car.get('type'))
    print(car.get('speed'))
    
    print(car.get('color', '  '))   #   
    print(car.get('speed', 0))       # 0
    
  • に取得される.
  • c.遍歴辞書注意:for-in遍歴辞書から直接取ったのはkey
    dict1 = {'a': 100, 'b': 200, 'c': 300}
    
    #   1:
    #         key(    )
    for key in dict1:
        # key
        print(key, end=' ')
        # value
        print(dict1[key])
    
    
    #   2:
    print(dict1.values(), dict1.items())
    #      values(),      
    for value in dict1.values():
        print(value)
    
    #   2    :
    # values = []
    # for key in dict1:
    #     values.append(dict1[key])
    # for value in values:
    #     print(value)
    
    #   3:
    #      items(),    key value(     )
    for key, value in dict1.items():
        print(key, value)
    
    #   3    :
    # items = []
    # for key in dict1:
    #     items.append((key, dict1[key]))
    # for key,value in items:
    #     print(key, value)
    
  • である.
  • 辞書[key]=値を増やし、変更する-keyが存在しない場合はキー値ペアを追加する.keyが存在する場合、keyに対応する値
    
    
  • を修正する.
  • 追加
    movie = {'name': '       ', 'type': '  ', 'time': 120}
    movie['score'] = 7.9
    print(movie) # {'name': '       ', 'type': '  ', 'time': 120, 'score': 7.9}
    
  • 修正
    movie['type'] = '  '
    print(movie) # {'name': '       ', 'type': '  ', 'time': 120, 'score': 7.9}
    
  • 削除(キー値ペアを削除)
  • a.del辞書[key]-辞書で指定するkeyに対応するキー値ペア
  • を削除します.
  • b.辞書Pop(key)-辞書のkeyに対応する値を取り出す例:
    del movie['time']
    print(movie) # {'name': '       ', 'type': '  ', 'score': 7.9}
    
    name = movie.pop('name')
    print(movie, name) # {'type': '  ', 'score': 7.9}        
    
  • 練習:辞書で学生の情報を保存します:{'name':'張三','age':30,'score':80}名前の変更、age->年齢の変更など、変更する必要がある情報を入力します.abc->プロンプト「この情報がありません」
    student = {'name': '  ', 'age': 30, 'score': 80}
    message = input('         :')
    
    if student.get(message):
        if message == 'name':
            new_name= input('       :')
            student['name'] = new_name
        elif message == 'age':
            new_age = int(input('       :'))
            student['age'] = new_age
        else:
            new_score = input('       :')
            student['score'] = new_score
    
        print(student)
    
    else:
        print('     !')
    

    辞書関連メソッド
    1.比較演算
    ==, !=
    注意:2つの辞書が等しいかどうかを判断するには、キー値ペアが同じかどうかを見るだけで、キー値ペアの順序にかかわらず.ディクショナリではサポートされていません>と
    例:
    print({'a': 11, 'b': 22} == {'b': 22, 'a': 11})   # True
    

    2. in/not in
  • key in辞書---辞書で指定するkeyが
  • 存在するか否かを判断する.
  • key not in辞書---辞書で指定されたkeyが存在しないかどうかを判断する
  • 例:
    dict1 = {'a': 1, 'z': 2, 'c': 3}
    print('a' in dict1)  # True
    print(1 in dict1)    # False
    

    3.len(), max(), min()
    dict(データ)-データ要件はシーケンスであり、シーケンス内の要素は2つの要素を持つサブシーケンスである
    dict1 = {'a': 1, 'z': 2, 'c': 3}
    
    #            
    print(len(dict1)) # 3
    #      key    /   
    print(max(dict1), min(dict1)) # z a
    
    #         
    print(dict([(1, 2), ('a', 'b'), [10, 'abc']])) # {1: 2, 'a': 'b', 10: 'abc'}
    
    dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 170}
    #      /  /         key       /  /     
    print(list(dict2))      # ['name', 'color', 'height']
    

    4.関連方法
  • 辞書clear()-辞書を空にする注意:空のコンテナを再割り当てすると、メモリ領域が再割り当てされ、
    dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 170}
    print(id(dict2)) # 140099161335920
    dict2.clear()
    print(dict2, id(dict2)) # {} 140099161335920
    
  • を消費しすぎるため、空のコンテナを再割り当てするのではなく、clear操作を推奨します.
  • 辞書copy()-辞書の要素をコピーし、新しい辞書
    dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 170}
    #     ,         ,       
    dict3 = dict2
    print(dict3) # {'name': 'xiaohua', 'color': 'black', 'height': 170}
    dict3['name'] = '  '
    print(dict3) # {'name': '  ', 'color': 'black', 'height': 170}
    print(dict2) # {'name': '  ', 'color': 'black', 'height': 170}
    
    dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 170}
    #     ,       ,        
    dict4 = dict2.copy()
    print(dict4) # {'name': 'xiaohua', 'color': 'black', 'height': 170}
    del dict4['color'] 
    print(dict4) # {'name': 'xiaohua', 'height': 170}
    print(dict2) # {'name': 'xiaohua', 'color': 'black', 'height': 170}
    
  • を生成します.
  • 辞書fromkeys(シーケンス、値)--シーケンス内のすべての要素をkeyとし、指定した値をvalueとして新しい辞書
    new_dict = dict.fromkeys('abc', (10, 20, 30))
    print(new_dict) # {'a': (10, 20, 30), 'b': (10, 20, 30), 'c': (10, 20, 30)}
    
    new_dict = dict.fromkeys(['name', 'age', 'tel'], 0)
    print(new_dict) # {'name': 0, 'age': 0, 'tel': 0}
    
  • を作成します.
  • 辞書keys()-辞書のすべてのkeyを取り出して新しいシーケンス
  • を生成する
  • 辞書values()-辞書のすべてのvalueを取り出して新しいシーケンス
  • を生成します.
  • 辞書items()-辞書のすべてのkeyとvalueを元祖として取り出して新しいシーケンス
    dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 170}
    print(dict2.keys(), dict2.values(), dict2.items()) # dict_keys(['name', 'color', 'height']) dict_values(['xiaohua', 'black', 170]) dict_items([('name', 'xiaohua'), ('color', 'black'), ('height', 170)]) 
    
  • を生成する
  • 辞書setdefault(key, value=None)
  • 辞書setdefault(key)-keyが存在しない場合、キー値対keyを追加します:None
  • 辞書setdefault(key,value)-keyが存在しない場合、キー値を追加してkey:valueに注意します.この操作はkeyが存在する場合、
    dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 170}
    
    dict2.setdefault('name2', '  ')
    dict2.setdefault('sex')
    print(dict2) # {'name': 'xiaohua', 'color': 'black', 'height': 170, 'name2': '  ', 'sex': None}
    
  • は変更されません.
  • 辞書1.update(辞書2)-辞書2のキー値ペアを使用して辞書1を更新します.注意:辞書2のkeyが存在する場合、辞書1自体が存在するのは修正であり、存在しない場合は
    dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 170}
    dict2.update({'height': 180, 'age': 18})
    print(dict2) # {'name': 'xiaohua', 'color': 'black', 'height': 180, 'age': 18}
    
    dict2.update([('a', 100), ('age', 30)])
    print(dict2) # {'name': 'xiaohua', 'color': 'black', 'height': 180, 'age': 30, 'a': 100}
    
  • を追加する.
    しゅうごう
    1.集合とは
  • 可変、無秩序;
  • 要素は一意で可変ではない
  • 2.字面量
    {要素1,要素2,要素3...}
    例:
    set1 = {1, 23, 'abc'}
    print(set1) # {1, 'abc', 23}
    # set1 = {1, 23, 'abc', [1, 2]}  # TypeError: unhashable type: 'list'
    
    #      
    set2 = set()
    print(type(set2)) # 
    
    #         
    set3 = {1, 2, 1, 2, 2}
    print(set3) # {1, 2}
    
    list1 = [1, 2, 1, 2, 2]
    list1 = list(set(list1)) 
    print(list1) # [1, 2]
    

    3.増删改查
  • コレクションを調べる無秩序は単独で単一要素を取得することができないため、1つの遍歴
    for item in set1:
        print(item)
    
  • しかできない.
  • a.集合.add(要素)-指定した要素
  • をセットに追加します.
  • b.集合.update(シーケンス)-シーケンス内の要素をセットに追加する例:
    set1 = {1, 38, 90, 8}
    set1.add('abc')
    print(set1)
    
    set1.update('abc')
    print(set1)
    
    set1.update({'aa': 10, 'bb': 20})
    print(set1)
    
  • 削除集合.remove(要素)---コレクションで指定した要素を削除する例:
    set1 = {1, 38, 90, 8}
    set1.remove(90)
    print(set1)
    
  • 4.数学集合演算
    えんざん
    機能
    交差(&)
    2つの集合の共通要素を取得して新しい集合を生成
    並列(|)
    2つのコレクションの要素を結合して新しいコレクションを生成
    差分(-)
    集合1-集合2:集合1に含まれる集合2の部分を取り除き,残りは新しい集合を生成する.
    補完(^)
    2つの集合を統合し、共通の部分を削除し、残りの部分に新しい集合を生成します.
    サブセットの判断(>または<>)
    集合1>集合2->集合1に集合が含まれているか否かを判定する2集合1集合が含まれているか否かを判定する
    例:
    set1 = {1, 2, 3, 4, 5, 6}
    set2 = {4, 5, 6, 7, 8}
    #   
    print(set1 & set2)  # {4, 5, 6}
    #   
    print(set1 | set2)  # {1, 2, 3, 4, 5, 6, 7, 8}
    #   
    print(set1 - set2)  # {1, 2, 3}
    #   
    print(set1 ^ set2)  # {1, 2, 3, 7, 8}
    
    print({1, 2, 3, 9, 18} > {1, 2, 3, 0})   # False
    print({1, 2, 3, 9, 18} > {1, 2, 3})     # True、
    
    print({1, 2, 3} > {1, 2, 3})     # False
    print({1, 2, 3} >= {1, 2, 3})    # True