基礎學習第四彈,常用對象:元組、字典和集合
一、元組
1.1 元組的應用場景
思考:如果想要存儲多個數據,但是這些數據是不能修改的數據,怎么做?
答:列表?列表可以一次性存儲多個數據,但是列表中的數據允許更改。num_list = [10, 20, 30]
num_list[0] = 100
而一個元組可以存儲多個數據,元組內的數據是不能修改的。
元組相當于是寫死的列表
1.2 定義元組
元組特點:定義元組使用小括號,且逗號隔開各個數據,數據可以是不同的數據類型。# 多個數據元組
t1 = (10, 20, 30)
# 單個數據元組
t2 = (10,)注意:如果定義的元組只有一個數據,后面也要添加逗號,否則數據類型為唯一的這個數據的數據類型t2 = (10,)
print(type(t2)) # tuple
t3 = (20)
print(type(t3)) # int
t4 = ('hello')
print(type(t4)) # str
1.3 元組的常見操作
元組數據不支持修改,只支持查找,具體如下:按下標查找數據tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1[0]) # aaindex():查找某個數據,如果數據存在返回對應的下標,否則報錯,語法和列表、字符串的index方法相同。tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.index('aa')) # 0count():統計某個數據在當前元組出現的次數。tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.count('bb')) # 2len():統計元組中數據的個數。tuple1 = ('aa', 'bb', 'cc', 'bb')
print(len(tuple1)) # 4注意:元組內的直接數據如果修改則立即報錯tuple1 = ('aa', 'bb', 'cc', 'bb')
tuple1[0] = 'aaa'但是如果元組里面有列表,修改列表里面的數據則是支持的,故自覺很重要。tuple2 = (10, 20, ['aa', 'bb', 'cc'], 50, 30)
print(tuple2[2]) # 訪問到列表
# 結果:(10, 20, ['aaaaa', 'bb', 'cc'], 50, 30)
tuple2[2][0] = 'aaaaa'
print(tuple2)
二、字典
2.1 字典的應用場景
思考1: 如果有多個數據,例如:'Tom', '男', 20,如何快速存儲?
答:列表list1 = ['Tom', '男', 20]
思考2:如何查找到數據'Tom'?
答:查找到下標為0的數據即可。list1[0]
思考3:如果將來數據順序發生變化,如下所示,還能用list1[0]訪問到數據'Tom'嗎?。list1 = ['男', 20, 'Tom']
答:不能,數據'Tom'此時下標為2。
思考4:數據順序發生變化,每個數據的下標也會隨之變化,如何保證數據順序變化前后能使用同一的標準查找數據呢?
答:字典,字典里面的數據是以鍵值對形式出現,字典數據和數據順序沒有關系,即字典不支持下標,后期無論數據如何變化,只需要按照對應的鍵的名字查找數據即可。
2.2 創建字典的語法
字典特點:符號為大括號
數據為鍵值對形式出現
各個鍵值對之間用逗號隔開# 有數據字典
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
# 空字典
dict2 = {}
dict3 = dict()注意:一般稱冒號前面的為鍵(key),簡稱k;冒號后面的為值(value),簡稱v。
2.3 增
寫法:字典序列[key] = 值注意:如果key存在則修改這個key對應的值;如果key不存在則新增此鍵值對。dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
dict1['name'] = 'Rose'
# 結果:{'name': 'Rose', 'age': 20, 'gender': '男'}
print(dict1)
dict1['id'] = 110
# {'name': 'Rose', 'age': 20, 'gender': '男', 'id': 110}
print(dict1)注意:字典為可變類型。
2.4 刪del():刪除字典或刪除字典中指定鍵值對。dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
del dict1['gender']
# 結果:{'name': 'Tom', 'age': 20}
print(dict1)clear():清空字典dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
dict1.clear()
print(dict1) # {}
2.5 改
寫法:字典序列[key] = 值注意:如果key存在則修改這個key對應的值?;如果key不存在則新增此鍵值對。
2.6 查
key值查找dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1['name']) # Tom
print(dict1['id']) # 報錯如果當前查找的key存在,則返回對應的值;否則則報錯。
get()語法字典序列.get(key, 默認值)注意:如果當前查找的key不存在則返回第二個參數(默認值),如果省略第二個參數,則返回None。快速體驗dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.get('name')) # Tom
print(dict1.get('id', 110)) # 110
print(dict1.get('id')) # None
keys()
返回一個字典所有的鍵dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.keys())
# dict_keys(['name', 'age', 'gender'])
values()
返回一個字典所有的值dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.values()) # dict_values(['Tom', 20, '男'])
items()
以列表返回可遍歷的(鍵, 值) 元組數組dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.items()) # dict_items([('name', 'Tom'), ('age', 20), ('gender', '男')])
三、字典的循環遍歷
3.1 遍歷字典的keydict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key in dict1.keys():
print(key)
輸出結果name
age
gender
3.2 遍歷字典的valuedict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for value in dict1.values():
print(value)
輸出結果Tom
20
男
3.3 遍歷字典的元素
返回對象是元組dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for item in dict1.items():
print(item)
輸出結果('name', 'Tom')
('age', 20)
('gender', '男')
3.4 遍歷字典的鍵值對dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key, value in dict1.items():
print(f'{key} = {value}')
輸出結果name = Tom
age = 20
gender = 男
四、集合
4.1 創建集合
創建集合使用{}或set(), 但是如果要創建空集合只能使用set(),因為{}用來創建空字典。s1 = {10, 20, 30, 40, 50}
print(s1)
# 無序的
s2 = {10, 30, 20, 10, 30, 40, 30, 50}
print(s2)
# 不重復的
s3 = set('abcdefg')
print(s3)
s4 = set()
print(type(s4)) # set
s5 = {}
print(type(s5)) # dict特點:集合可以去掉重復數據;
集合數據是無序的,故不支持下標
4.2 增加數據add()s1 = {10, 20}
s1.add(100)
s1.add(10)
print(s1) # {100, 10, 20}因為集合有去重功能,所以,當向集合內追加的數據是當前集合已有數據的話,則不進行任何操作。update(), 追加的數據是序列。s1 = {10, 20}
# s1.update(100) # 報錯
s1.update([100, 200])
s1.update('abc')
print(s1)
# {100, 'c', 200, 10, 'b', 20, 'a'}
4.3 刪除數據remove(),刪除集合中的指定數據,如果數據不存在則報錯。s1 = {10, 20}
s1.remove(10)
print(s1)
s1.remove(10) # 報錯
print(s1)discard(),刪除集合中的指定數據,如果數據不存在也不會報錯。s1 = {10, 20}
s1.discard(10)
print(s1)
s1.discard(10)
print(s1)pop(),隨機刪除集合中的某個數據,并返回這個數據。s1 = {10, 20, 30, 40, 50}
del_num = s1.pop()
print(del_num)
print(s1)
4.4 查找數據in:判斷數據在集合序列
not in:判斷數據不在集合序列s1 = {10, 20, 30, 40, 50}
print(10 in s1)
print(10 not in s1)
# True False