一、元組
-
元組的基本介紹
元組是?個(gè)不可變序列(?般當(dāng)我們希望數(shù)據(jù)不改變時(shí),我們使?元組,其他情況下基本都?列表)。元組的表現(xiàn)形式:tuple;并使?()創(chuàng)建元素!并且也可以使用索引值來(lái)取值!
eg.
image.png -
元組不是空元組?少有?個(gè) “逗號(hào)(,)” 當(dāng)元組不是空元組時(shí)括號(hào)可以省略。
eg.
image.png -
元組的解包
元組解包指將元組當(dāng)中的每?個(gè)元素都賦值給?個(gè)變量。(變量和元素?cái)?shù)量必須一一對(duì)應(yīng)或者變量加“”以促成列表)即可通過(guò)加“”的形式調(diào)整變量不足的情況!
eg.
image.png
image.png
二、字典
2.1 字典的基本數(shù)據(jù)結(jié)構(gòu)
- 字典屬于?種新的數(shù)據(jù)結(jié)構(gòu)稱(chēng)為映射(mapping)。字典的作?和列表類(lèi)似,都是?來(lái)存儲(chǔ)對(duì)象的容器。
d={},字典的創(chuàng)建可以為空值!
★字典與列表對(duì)存儲(chǔ)數(shù)據(jù)的優(yōu)劣勢(shì):
列表存儲(chǔ)數(shù)據(jù)的性能好,但是查詢(xún)數(shù)據(jù)的性能差,字典正好與之相反。 - 在字典中每?個(gè)元素都有唯?的名字,通過(guò)這個(gè)唯?的名字可以找到指定的元素。這個(gè)唯?的名字我們稱(chēng)之為key,通過(guò)key可以快速查詢(xún)value 也可以稱(chēng)之為值。因此字典我們也稱(chēng)之為鍵值對(duì)(key-value)結(jié)構(gòu)。
每個(gè)字典中都可以有多個(gè)鍵值對(duì),?每?個(gè)鍵值對(duì)我們稱(chēng)其為?項(xiàng)(item)。 -
語(yǔ)法結(jié)構(gòu):
{key:value,key:value,key:value...}即創(chuàng)建一個(gè)有數(shù)據(jù)的字典。
PS:
字典的值可以是任意對(duì)象,字典的鍵可以是任意的不可變對(duì)象(int、str、bool、tuple....)
eg.

-
字典的鍵是不能重復(fù)的,如果出現(xiàn)重復(fù)的后?的會(huì)替換前?的!
eg.
image.png -
根據(jù)鍵來(lái)獲取值如下:
語(yǔ)法結(jié)構(gòu):dict[key],key必須加引號(hào),否則會(huì)作為變量來(lái)進(jìn)行程序處理;當(dāng)然也可以通過(guò)將key賦值給一個(gè)變量,此時(shí)不用加引號(hào)
eg.
image.png
2.2 字典的使用
-
1、dict()函數(shù)來(lái)創(chuàng)建字典。
eg.
image.png

-
2、len(),用來(lái)獲取字典中鍵值對(duì)的個(gè)數(shù)。
eg.
image.png -
3、in 檢查字典中是否包含指定的鍵。
not in 檢查字典中是否不包含指定的鍵。
eg.
image.png -
4、d.get(key[,default]) 根據(jù)鍵來(lái)獲取字典的指定值。
如果key不存在,則返回“NONE”;第?個(gè)參數(shù)(即)可以指定?個(gè)默認(rèn)值,當(dāng)獲取不到值的時(shí)候會(huì)返回默認(rèn)值。
eg.
image.png -
修改字典(修改、添加K-V等)
當(dāng)然添加也可以用:d.setdefault()函數(shù)
eg.
image.png
image.png
如果key已存在字典當(dāng)中,則返回key的值,不會(huì)對(duì)字典進(jìn)行任何操作!
如果key不存在,則向字典中添加這個(gè)key,并設(shè)置value值!

-
5、update() 函數(shù),將其他字典的key-value添加到當(dāng)前的字典當(dāng)中;如果有重復(fù)的key-V,則后面會(huì)替換前面的Key-V。
eg.
image.png -
6、del d[],刪除字典中的key-value。
eg.
image.png
-
7、popitem(),刪除字典最后的?個(gè)key-value 這個(gè)?法是有返回值的。刪除之后它會(huì)將刪除的key-value作為返回值返回。
eg.
image.png -
8、d.pop(key[,default]) 根據(jù)key刪除?定中的value。第?個(gè)參數(shù)可以指定?個(gè)默認(rèn)值,當(dāng)獲取不到值的時(shí)候會(huì)返回默認(rèn)值。
而使用del()則是沒(méi)有返回值的!
eg.
image.png
2.3 copy(),淺復(fù)制
-
d.copy() ?法?來(lái)對(duì)字典進(jìn)?潛復(fù)制
PS:潛復(fù)制只會(huì)復(fù)制字典本身,如果字典中還有個(gè)字典是不會(huì)進(jìn)?復(fù)制的?。ㄋ云鋓d值也不會(huì)相同)
這個(gè)值也可以是一個(gè)可變對(duì)象,這個(gè)可變對(duì)象也不會(huì)被復(fù)制!
eg.
image.png
image.png
2.4 遍歷字典
我們主要可以通過(guò)3種?式對(duì)字典進(jìn)?遍歷。(與for...in...連用)
-
1、d.keys() 該?法返回字典所有的key。
eg.
image.png -
2、d.values(),該?法返回?個(gè)序列,序列中保存有字典的值。
eg.
image.png -
3、d.items(),該?法會(huì)返回字典中所有的項(xiàng)。它返回?個(gè)序列,序列中包含有雙值?序列,雙值分別是:字典中的key和value。
image.png
四、集合
4.1 集合的簡(jiǎn)介
-
1、集合和列表?常相似。集合不能為空值,集合創(chuàng)建時(shí)必須有指定元素!使用{}來(lái)創(chuàng)建集合,注意與字典的區(qū)別
特點(diǎn):
★集合只能存儲(chǔ)不可變對(duì)象
★集合中存儲(chǔ)的對(duì)象是?序的
★集合不能出現(xiàn)重復(fù)元素
eg.
image.png -
2、可以通過(guò)set()函數(shù)來(lái)將序列和字典轉(zhuǎn)換成集合
eg.
image.png
由上圖可知,但是注意字典轉(zhuǎn)換成集合時(shí),只是轉(zhuǎn)換的“key”
PS:要想通過(guò)索引獲得集合中的指定元素,必須先將其轉(zhuǎn)換成列表等有序數(shù)據(jù)才能查詢(xún)數(shù)據(jù)!
eg.

4.2 集合的使用
- 1、使用in和not in來(lái)檢查集合中的元素;
- 2、len()函數(shù),來(lái)獲取集合中元素的數(shù)量。
- 3、s.add()函數(shù),向集合中添加元素。
- 4、s.update()函數(shù),將?個(gè)集合中的元素添加到另?個(gè)集合當(dāng)中。
- 5、s.pop()函數(shù),隨機(jī)刪除集合中的?個(gè)元素?般是刪除最后?個(gè)元素。并有一個(gè)返回值。
- 6、s.remove()函數(shù), 刪除集合中指定的元素。
-
7、s.clear() 函數(shù),用來(lái)清空集合。
eg.
001.jpg





4.3 集合的運(yùn)算
- & 交集運(yùn)算
- | 并集運(yùn)算
- - 差集運(yùn)算
- ^ 亦或集
- <= 檢查?個(gè)集合是否是另?個(gè)集合的?集
- < 檢查?個(gè)集合是否是另?個(gè)集合的真?集
- >=檢查?個(gè)集合是否是另?個(gè)集合的超集
- >檢查?個(gè)集合是否是另?個(gè)集合的真超集
eg.

五、可變對(duì)象
- 每個(gè)對(duì)象中都保存了三個(gè)數(shù)據(jù):id(標(biāo)識(shí))、type(類(lèi)型)、value(值)。
-
列表是一個(gè)可變對(duì)象!
eg.
image.png
通過(guò)上圖可知,修改對(duì)象時(shí),不會(huì)改變對(duì)象的id;但是重新賦值操作時(shí),會(huì)改變變量即改變id!
























