まとめDay 8_元祖、辞書、集合

11470 ワード

==元祖==
1.元祖(tuple)とは
 pythonが提供するコンテナ型データ型は、可変で秩序がある.(元祖は可変リスト)
2.字面量と要素
  (元素1,元素2,元素3...)  内の要素は任意のタイプのデータであってもよく、タイプは異なり、同じ要素が複数あってもよい
point = (100, 30)
print(point, type(point))

  注意:  1.空のルーツ:()
tuple1 = ()
print(type(tuple1))

  2.要素が1つしかない元祖
tuple2 = (100,)
print(tuple2, type(tuple2))

  3.複数の要素を直接カンマで区切り、括弧を付けずに表すのも元祖です
tuple3 = 1, 2, 3
print(tuple3, type(tuple3))

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.変数1、変数2...=「元祖」--前の変数で元祖要素の値を順次取得します.(前の変数の個数と元祖要素の個数が一致することが要求されます)
point = (100, 200, 10)
x, y, z = point    # x,y = (100, 200)  <==> x, y = 100, 200
print(x, y, z)

  2. 変数1、変数2=元祖--帯の変数によって元祖の残りの部分を取得する.注意:この構造ではバンドの変数は1つしかありません.バンドのない変数は複数あります.
name, *scores = ('  ', 100, 89, 67, 99)
print(name, scores)

name, num, *scores = ('  ', 100, 89, 67, 99)
print(name, num, scores)

*info, num1, num2 = ('  ', 100, 89, 67, 99)
print(info, num1, num2)

info1, *nums, num1 = ('  ', 100, 89, 67, 99)
print(nums)

補足:*の使い方
# 1.          
nums = (1, 2, 3)
nums2 = [11, 22, 33]
print(*nums, *nums2)

4.関連演算(リストと同じ)
  +,*   in/not in   len(), max(), min(), sum(), tuple()
tuple1 = (1, 2, 3)
tuple2 = ('aa', 'bb')
print(tuple1 + tuple2)
print(tuple1*3)

print('aaa' in tuple2)

"""
5.ソート
  sorted(シーケンス)-シーケンス内の要素をソートし、新しいリストを生成します(シーケンスにかかわらず、最後にリストされます).
  注意:リスト.sort()--元のリストの要素の順序を変更します.「sorted(リスト)」--新しいリストを生成します.
nums = (1, 34, 89, 9)
new_nums = sorted(nums, reverse=True)
print(new_nums, tuple(new_nums),nums)

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

list1 = [1, 345, 90, 9]
new_list = list1.sort()    # None; sort        
print(list1, new_list)

==辞書==
1.辞書とは
 pythonが提供するコンテナ型データ型、可変かつ無秩序
2.字面量と要素
  は括弧で囲まれ、中には複数のキー値ペアがあり、各キー値ペアはカンマで区切られています.キー値ペアは辞書の要素です.キー値ペア--キー/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])
person[-2]

person = {'name': 'xiaohua', 'age': 18, 'sex': 'girl', 'height': 160, 'weight': 90, 'score': 89}
print(person['age'])

#   :                 (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])

==辞書要素操作==
辞書要素の追加削除
1.チェック(取得値)
注意:辞書のキー値は単独で持ち出すことに何の意味もありません.
car = {'color': '  ', 'type': '  ', 'price': 500000}
print(car['color'])
print(car['price'])
# print(car['speed'])  # KeyError: 'speed'

ゞ  b.字典.ゞget(key)-辞書のkey対応値を取得します.keyが存在しない場合、エラーは報告されず、デフォルト値Noneget(key,値1)-辞書のkey対応値を取得します.キーが存在しない場合はエラーは報告されず、指定した値1に取得されます.
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}
#         key(    )
for key in dict1:
    # key
    print(key, end=' ')
    # value
    print(dict1[key])


print(dict1.values(), dict1.items())
#      values(),      
for value in dict1.values():
    print(value)

# values = []
# for key in dict1:
#     values.append(dict1[key])
# for value in values:
#     print(value)


#      items(),    key value(     )
for key, value in dict1.items():
    print(key, value)

# items = []
# for key in dict1:
#     items.append((key, dict1[key]))
# for key,value in items:
#     print(key, value)

2.増、改
 辞書[key]=値-keyが存在しない場合はキー値ペアを追加します.キーが存在する場合はキーに対応する値を変更します
movie = {'name': '       ', 'type': '  ', 'time': 120}

#   
movie['score'] = 7.9
print(movie)

#   
movie['type'] = '  '
print(movie)

3.削除(キー値ペアの削除)
 a.del辞書[key]-辞書で指定したkeyに対応するキー値ペアを削除します.
ゞ  b.字典.ゞPop(key)-辞書のkeyに対応する値を取り出します.
del movie['time']
print(movie)

name = movie.pop('name')
print(movie, name)

#   :               : {'name': '  ', 'age': 30, 'score': 80}
#          ,    :name ->    , age ->     ... abc ->   '     '
"""
         : name
       :   
{'name': '  ', 'age': 30, 'score': 80}

         : age
       : 18
{'name': '  ', 'age': 18, 'score': 80}

         : 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
辞書に指定されたキーが存在するか否かを判断する.辞書に指定されたキーが存在しないか否かを判断する.
dict1 = {'a': 1, 'z': 2, 'c': 3}
print('a' in dict1)  # True
print(1 in dict1)    # False

3. len(), max(), min()
 dict(データ)-データ要件はシーケンスであり、シーケンス内の要素は両方とも2つの要素を持つサブシーケンスである
#            
print(len(dict1))
#      key    /   
print(max(dict1), min(dict1))

#         
print(dict([(1, 2), ('a', 'b'), [10, 'abc']]))

dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 170}
#      /  /         key       /  /     
print(list(dict2))      # ['name', 'color', 'height']

4.関連方法
  1.字典clear()-空の辞書をクリアします.注意:空のコンテナを再割り当てするのではなく、clear操作を推奨します.
dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 170}
print(id(dict2))
dict2.clear()
print(dict2, id(dict2))

#             ,    
dict2 = {}
print(id(dict2))

  2.字典copy()-辞書の要素をコピーし、新しい辞書を生成します.
dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 170}
#     ,         ,       
dict3 = dict2
print(dict3)
dict3['name'] = '  '
print(dict3)
print(dict2)

dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 170}
#     ,       ,        
dict4 = dict2.copy()
print(dict4)
del dict4['color']
print(dict4)
print(dict2)

  3. dict.fromkeys(シーケンス、値)--シーケンス内のすべての要素をkeyとし、指定した値をvalueとして新しい辞書を作成します.
new_dict = dict.fromkeys('abc', (10, 20, 30))
print(new_dict)

new_dict = dict.fromkeys(['name', 'age', 'tel'], 0)
print(new_dict)

辞書を引くkeys()-辞書のすべてのkeyを取り出して新しいシーケンスvalues()-辞書のすべてのvalueを取り出して新しいシーケンスitems()-辞書のすべてのkeyとvalueを元祖として取り出して新しいシーケンスを生成します.
dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 170}
print(dict2.keys(), dict2.values(), dict2.items())

  4.字典setdefault(key, value=None)
辞書を引くsetdefault(key)-keyが存在しない場合、キー値対key:Nonesetdefault(key,value)-keyが存在しない場合、キー値を追加してkey:value
dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 170}

dict2.setdefault('name2', '  ')
dict2.setdefault('sex')
print(dict2)

  5. 辞書1.update(辞書2)-辞書2のキー値ペアを使用して辞書1を更新します.  辞書2のkeyであれば、辞書1自体が存在するのは修正であり、存在しないのは追加する
dict2 = {'name': 'xiaohua', 'color': 'black', 'height': 170}
dict2.update({'height': 180, 'age': 18})
print(dict2)

dict2.update([('a', 100), ('age', 30)])
print(dict2)

==集合==
1.集合とは
バリウム可変、無秩序;要素は一意で可変ではありません
2.字面量
{要素1,要素2,要素3...}
set1 = {1, 23, 'abc'}
print(set1)
# set1 = {1, 23, 'abc', [1, 2]}  # TypeError: unhashable type: 'list'

#      
set2 = set()
print(type(set2))

set3 = {1, 2, 1, 2, 2}
print(set3)

#         
list1 = [1, 2, 1, 2, 2]
list1 = list(set(list1))
print(list1)

3.増删改查
   {key1:value1, key2:value2, key3:value3...}   1.ルックアップセットは単一の要素を単独で取得することはできず、1つの遍歴しかできません.
for item in set1:
    print(item)

  2.ゞ増  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)

  3.ゞ删  集合.ゞ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