Day 8
一站粟、 元組(tuple)
1、python中容器數(shù)據(jù)類型尼摹,不可變且有序。
元組就是不可變的列表
不可變:不支持增刪改剂娄,可以查
有序:每個元素對應(yīng)一個確定的下標(biāo)
2窘问、 字面量和元素
(元素1,元素2宜咒,元素3……)
元素可以是任意的數(shù)據(jù)類型,并且類型可以不一樣把鉴,同樣的元素可以有多個
3故黑、 注意:
a. 空的元組:()
b. 只有一個元素的元組
t = (90,) 逗號必須要
c. 直接將多個元素用逗號隔開儿咱,不加小括號也表示是一個元祖
4、 元組獲取元素和列表一樣
t = (1, 2, 3, 4)
print(t[1], t[-1])
#2 4
變量1场晶,變量2…… = 元組 --- 用前面的變量一次獲得元組元素的值混埠。
要去前面變量的個數(shù)和元組元素的個數(shù)一致
變量1, 變量2 = 元組 --- 通過帶的變量獲取元組中剩余的部分诗轻。
帶‘*’的只能有一個钳宪,不帶的可以多個
t = 1, 2
x, y = t
t = 1, 2, 4
x, *y = t
# * 的用法
print(*t)
#1 2 4
5、 相關(guān)運算(和列表一樣)
+扳炬,*吏颖, in, not in恨樟, len()半醉,max(),min()劝术,tuple()
t1 = 1, 23, 4
t2 = 2, 3, 4
print(t1 + t2)
print(t1 * 2)
#(1, 23, 4, 2, 3, 4)
#(1, 23, 4, 1, 23, 4)
6缩多、 排序
sorted(序列) - 對序列中的元素排序,產(chǎn)生一個新的序列
注意:列表.sort() --修改原列表中元素的順序
sorted.(列表) -- 產(chǎn)生一個新列表
t1 = 1, 13213, 2134, 45
t2 = sorted(t1)
print(t2)
#[1, 45, 2134, 13213]
7养晋、 join的使用
字符串.join(序列) - 將序列中的元素取出衬吆,用指定的字符串連接在一起。
要求序列中的元素必須是字符串
new_str = '*'.join('123')
print(new_str)
#1*2*3
二绳泉、 字典
1逊抡、 字典的意義
python提供的容器型數(shù)據(jù)類型,可變且無序
可變 - 支持元素的增刪改
無序 - 不支持下標(biāo)操作
2圈纺、 字面量和元素
用大括號括起來秦忿,里面多個鍵值對,每個鍵值對用逗號隔開蛾娶。鍵值對就是字典的元素
{key1:value, key2:value2, key3:value3……}
鍵值對 - key:鍵灯谣,value:值;鍵值對必須成對出現(xiàn)蛔琅,而且脫離字典單獨出現(xiàn)沒有意義胎许。
key : 必須是不可變且唯一。實際一般將字符串作為key
value: 可以是任意類型的數(shù)據(jù)
注意:字典存儲數(shù)據(jù)罗售,實質(zhì)是通過值來存儲的辜窑。key是值對應(yīng)的標(biāo)簽和獲取值得方式。
3寨躁、 使用字典:多個沒有相同意義的數(shù)據(jù)(需要區(qū)分)穆碎,就使用字典。
例如:保存一個人的不同信息职恳,一輛車的不同信息所禀。
使用列表:存儲的多個數(shù)據(jù)是有相同意義的數(shù)據(jù)(不要去區(qū)分)方面,就使用列表。
例如:保存一個班的學(xué)生信息色徘,保存所有的價格
練習(xí):聲明一個變量恭金,保存一個班的學(xué)生信息,每個學(xué)生需要保存姓名褂策、電話和年齡
stu_inf = [{'name': 'ashui', 'tel': "123", 'age': '12'},
{'name': 'xiaoming', 'tel': "123", 'age': '12'},
{'name': 'xiaoming', 'tel': "123", 'age': '12'}]
print(stu_inf[0])
# {'name': 'ashui', 'tel': '123', 'age': '12'}
三由捎、 字典元素的增刪改查
1宏娄、 查(獲取值) - 獲取字典中key對應(yīng)值
注意:字典中的鍵值對單獨拎出來沒有任何意義
a. 字典[key] -- 獲取字典中key對應(yīng)值
注意:當(dāng)key 不存在的時候,會報錯KeyError
b. 字典.get(key) - 獲取字典中key對應(yīng)值
注意:當(dāng)key不存在的時候,會取到一個默認(rèn)值None
字典.get(key,值1) - 獲取字典中key對應(yīng)值
注意:當(dāng)key不存在的時候慧瘤,會取到指定的值1
c. 遍歷字典
注意:直接通過for-in遍歷字典取到的是key
car = {'color': 'yellow', 'type': '跑車', 'price': 123021341}
print(car['color'])
print(car.get('type'))
#yellow
#跑車
# 遍歷字典獲取key
for x in car:
print(x)
print(car[x])
# 遍歷字典獲取values
for x in car.values():
print(x)
# 遍歷字典的items()确买,直接獲取鍵對值
for key, value in car.items():
print(key, value)
2治宣、 增怕享、改
字典[key] = 值 -- 當(dāng)key不存在的時候,就是添加鍵值對尾抑;當(dāng)key存在的時候歇父,就是修改key對應(yīng)的值
3、 刪(刪除鍵值對)
a. del 字典[key] -- 刪除字典中指定的key對應(yīng)的鍵值對
b. 字典.pop(key) -- 取出字典中key對應(yīng)的值
car['qw'] = 'er'
print(car)
del car['qw']
print(car)
print(car.pop('color'))
用一個字典來保存學(xué)生的信息{'name': '張三', 'age' : 30, 'score': 80}
輸入需要修改的信息再愈,沒有就提示該信息不存在
stu_inf = {'name': '張三', 'age': 30, 'score': 80}
s = input('請輸入要修改的信息:')
if stu_inf.get(s):
y = input('請輸入要修改的內(nèi)容:')
if s == 'name':
stu_inf['name'] = y
if s == 'age':
stu_inf['age'] = y
if s == 'score':
stu_inf['score'] = y
print(stu_inf)
else:
print('沒有此信息')
stu_inf = {'name': '張三', 'age': 30, 'score': 80}
s = input('請輸入要修改的信息:')
if stu_inf.get(s):
for x in stu_inf:
if s == x:
x = input('請輸入要修改的信息:')
stu_inf[s] = x
print(stu_inf)
else:
print('沒有此信息')
四榜苫、 字典的方法
1、 比較運算
== 翎冲, != :判斷兩個字典是否相等垂睬,只看鍵值對是否一樣,不管鍵值對的順序
字典不支持大于和小于符號
2抗悍、 in / not in
key in 字典 --- 判斷字典中指定的key是否存在
key in not 字典 --- 判斷字典中指定的key是否不存在
3驹饺、 len*(),max(),min()
4、字典類型轉(zhuǎn)換
a. 列表轉(zhuǎn)字典 :dict(數(shù)據(jù)) - 數(shù)據(jù)要求是序列缴渊,并且序列中的元素都是有兩個元素的子序列
b. 元祖或字典轉(zhuǎn)列表赏壹,就是將key提取出來。
5衔沼、 相關(guān)方法
a. 字典.clear() - 清空字典
b. 字典.copy() - 復(fù)制字典中的元素蝌借,產(chǎn)生一個新的字典
c. dict.fromkeys(序列,值) - 以序列中所有的元素作為key,
指定的值作為value創(chuàng)建一個新的字典的初始值
d. 字典.keys() - 將字典中所有的key取出產(chǎn)生一個新的序列
字典.value() - 將字典中所有的value取出產(chǎn)生一個新的序列
字典.items() - 將字典中所有的key和value取出作為一個元組產(chǎn)生一個新的序列
e. 字典.setdefault(key,value=None)
字典.setdefault(key) - 當(dāng)key不存在的時候指蚁,添加鍵值對key:None
字典.setdefault(key,value) - 當(dāng)key不存在的時候菩佑,添加鍵值對key:value
注意: 這個操作當(dāng)key存在的時候,不會修改
f. 字典1.update(字典2) - 使用字典2中的鍵值對去更新字典1凝化。
如果字典2的key稍坯,字典1中本身存在就是修改,不存在就添加
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 2, 'a': 1}
print(dict1 == dict2)
print('a' in dict1)
len(dict1)
dict1.clear()
print(dict1)
print(dict2.keys())
new_dict = dict.fromkeys('abc', 100)
print(new_dict)
print(new_dict.setdefault(2))
五搓劫、 集合
1劣光、 什么是集合(set)
可變的袜蚕,無序的;元素是唯一并且不可變
2绢涡、 字面量
{元素1,元素2遣疯,元素3,……}
set1 = {1, 23, 'a'}
print(set1)
# {1, 'a', 23}
set2 = set() 空集合
集合自帶去重功能
3雄可、查增刪
a. 查,集合不能單獨的獲取的單個元素缠犀,只能一個一個的遍歷
b. 增:集合.add(元素) - 在集合中添加指定的元素
集合.upadte(序列) - 將序列中的元素添加到集合中
c. 刪:集合.remove(元素) - 刪除集合中指定的元素
set1 = {1, 2, 3, 4, 5, 6}
for i in set1:
print(i)
set1.add('1')
print(set1)
set1.update(['qw', 'er'])
print(set1)
set1.remove(1)
print(set1)
# 1
# 2
# 3
# 4
# 5
# 6
# {1, 2, 3, 4, 5, 6, '1'}
# {1, 2, 3, 4, 5, 6, 'er', 'qw', '1'}
# {2, 3, 4, 5, 6, 'er', 'qw', '1'}
4数苫、 數(shù)學(xué)集合運算
交集(&):獲取兩個集合公共的元素產(chǎn)生一個新的集合
并集(|):將兩個集合中的元素合并在一起產(chǎn)生一個新的集合
差集(-):集合1 - 集合2 ,去掉集合1中包含集合2中的部分
補集(^):將兩個集合號合并在一起辨液,去掉公共部分虐急,剩下的產(chǎn)生一個新的集合
子集的判斷:集合1>集合2 --> 判斷集合1中是否包含集合2
集合1<集合2 --> 判斷集合2中是否包含集合1
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
print(set1 & set2)
print(set1 | set2)
print(set1 - set2)
print(set1 ^ set2)
print(set1 > set1)
# {3, 4, 5}
# {1, 2, 3, 4, 5, 6, 7}
# {1, 2}
# {1, 2, 6, 7}
# False