課件-第5章元祖和字典_第1頁
課件-第5章元祖和字典_第2頁
課件-第5章元祖和字典_第3頁
課件-第5章元祖和字典_第4頁
課件-第5章元祖和字典_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Python基礎(chǔ)編程元祖和字典第4章010203040506元祖操作元祖元祖函數(shù)本章字典0708列表推導(dǎo)式字典函數(shù)&方法淺拷貝與深拷貝操作字典元祖01元祖Python的元祖和列表類似,不同之處在于元祖的元素不能被修改,而列表的元素可以被修改。也可進(jìn)行分片和連接操作。元祖使用小括號(hào)創(chuàng)建,列表使用方括號(hào)創(chuàng)建元祖創(chuàng)建語法元祖名=(元素1,元素2,元素n…….)示例students=('jack','tom','john','amy','kim','sunny’)操作元祖02元組元組索引:以下元組成名為students,要元祖中的tomjacktomjohnamykim…34n20

1students[

1]刪除元祖可以使用del語句來刪除整個(gè)元祖元祖和列表不一樣,元祖中的元素值是不允許被單獨(dú)修改和刪除的,但是刪除元祖語法del

元組名示例tuple1=('abcd',123,3.33,'o')print("刪除之前的元祖為:",tuple1)del

tuple1print("刪除之后的元祖為:",tuple1)元組截取和截取元組中指定元組的元素雖然不能夠被改變,但是元組也是一個(gè)序列,也可以通過索引去位置的元素以下元組名為:students,需要截取students的前三個(gè)元素jacktomjohnamykim…01

2students[0:3]students=['jack','tom','john','amy','kim','sunny']print("截取元素0:3",students[0:3])元祖元祖就是元祖中的元祖,元祖中的元素可以是一個(gè)新的元祖以下列元祖為:students,需要獲取元祖中的tomjackjohnamykim…tom18男10 1

2Python元祖函數(shù)03Python元祖函數(shù)函數(shù)&方法描述示例len(tuple)計(jì)算元祖中元素的個(gè)數(shù)tuple1=(4,2,6,10,9,8)num=len(tuple1)print(num)輸出結(jié)果:6max(tuple)返回列表元素中的最大值。tuple1=(4,2,6,10,9,8)num=max(tuple1)print(num)輸出結(jié)果:10min(tuple)返回列表元素中的最小值。tuple1=(4,2,6,10,9,8)num=min(tuple1)print(num)輸出結(jié)果:2tuple(list)將列表轉(zhuǎn)換為元祖students=['jack','tom','john','amy','kim','sunny’]print(students)tuple1=tuple(students)

print(tuple1)輸出結(jié)果:['jack',

'tom',

'john',

'amy',

'kim',

'sunny']('jack',

'tom',

'john',

'amy',

'kim',

'sunny')字典04字典字典是另外一種可變?nèi)萜黝愋停铱梢匀我忸愋蛯?duì)象。列表元素進(jìn)行修改的話,通過索引進(jìn)行修改,如果當(dāng)前元素的順序發(fā)生改變,此時(shí)還需要修改索引才能成功完成元素的修改。有沒有辦法,既能多個(gè)數(shù)據(jù),又能很方便準(zhǔn)確的定位元素呢?答:字典字典創(chuàng)建語法:字典的創(chuàng)建使用{},每個(gè)鍵值(key=>value)對(duì)用冒號(hào)(:)分割,每對(duì)之間用逗號(hào)(,)分割。字典名={key1:value1,key2:value2}示例students={'name':'Tom','age':18,'sex':'男',18:19}操作字典05字典tom18男sexname

agestudents['name']字典中根據(jù)鍵

值,可以指定自點(diǎn)名和放在方括號(hào)內(nèi)的鍵。以下字典想要獲取學(xué)員

。字典:students={'name':'tom','age':18,'sex‘:’男'}修改字典元素修改為20tom18男sexname

agestudents['age']=20字典元素也是可以修改的,通過key找到具體元

后,給一個(gè)新的元素值即可。以下字典將學(xué)員的字典:students={'name':'tom','age':18,'sex‘:’男'}name

agestudents['address']='sex'添加元素動(dòng)態(tài)的向字典中添加元素的時(shí)候,只要添加的鍵在字典中不存在,就會(huì)新增這個(gè)元素。在以下字典中添加一個(gè)住址信息字典:students={'name':'tom','age':18,'sex':'男'}tom18海address刪除字典元素使用del語句刪除元素:del既可以刪除指定的字典元素(列表也可以指定),也可以刪除整個(gè)字典,如果不指定key,代表刪除整個(gè)字典。語法如下:del

字典名[key]使用clear()方法清空整個(gè)字典:被清空的字典最后會(huì)剩下一個(gè)空的字典在,而用del刪除的字典在程序當(dāng)中就不存在了。語法如下:字典名.clear()字典函數(shù)&方法06Python字典函數(shù)函數(shù)描述示例len(dict)計(jì)算字典中元素的個(gè)數(shù)dict1={'name':'Tom','age':18,'sex':'男',18:19}print(len(dict1))輸出結(jié)果:4str(dict)輸出字典,已可打印的字符串表示dict1={'name':'Tom','age':18,'sex':'男',18:19}str1=str(dict1)print(str1)print(type(str1))#判斷str1是的數(shù)據(jù)類型輸出結(jié)果:{'name':'Tom','age':

18,

'sex':'男',18:

19}<class

'str'>type(variabl返回輸入變量的數(shù)據(jù)類dict1={'name':'Tom','age':18,'sex':'男',18:19}e)型,如果變量是字典就print(type(dict1))輸出結(jié)果:返回<class‘dict’>{'name':'Tom','age':

18,

'sex':'男',18:

19}<class

'dict'>Python字典方法方法描述示例dict.fromkeys(seq[,value])創(chuàng)建一個(gè)新字典,以序列seq中元素seq=('name','age','sex')dict1=dict.fromkeys(seq)做字典的值,print("新字典為:",dict1)value為字典所有dict2=dict.fromkeys(seq,'jack’)鍵對(duì)應(yīng)的初始值print("新字典為:",dict2)輸出結(jié)果:新字典為:{'name':None,

'age':

None,'sex':None}新字典為:{'name':'jack','age':'jack','sex':

'jack'}dict.get(key,default=None)返回指定鍵的值,如果值不在字典

中返回default值dict1={'name':'tom','age':18}print

("age鍵的值為:",dict1.get('age',9))print

("sex鍵的值為:",dict1.get('sex','男'))輸出結(jié)果:age鍵的值為

: 18

sex鍵的值為

:

男Python字典方法方法描述示例key

in

dict如果鍵在字典

dict里返回

true,否則返回falsedict1={'name':['tom','jack'],'age':18,'sex':'男',18:19}if

'name'

in

dict1:print("鍵name在字典中存在")else:print("鍵name在字典中不存在")輸出結(jié)果:鍵name在字典中存在dict.keys()以列表返回一個(gè)字典所有的鍵dict1={'name':['tom','jack'],'age':18,'sex':'男',18:19}print(dict1.keys())輸出結(jié)果:dict_keys(['name',

'age',

'sex',

18])Python字典方法方法描述示例dict.setdefault和get類似,但如dict1={'name':'tom','age':18}(key,default=No果鍵不存在于字典中,將會(huì)添加print

("age鍵的值為:",dict1.setdefault('age',9))print

("sex鍵的值為:",dict1.setdefault('sex','男’))ne)鍵并將值設(shè)為print

("新字典為:",dict1)default輸出結(jié)果:age鍵的值為

:

18sex鍵的值為

:

男新字典為:{'name':'tom',

'age':

18,

'sex':'男’}dict.values()以列表返回一個(gè)字典中的所有值dict1={'name':'tom','age':18}print(dict1.values())輸出結(jié)果:dict_values(['tom',

18])Python字典練習(xí)1.創(chuàng)建一個(gè)名為favorite_places的字典。在這個(gè)字典中,將三個(gè)人的名字用作鍵;對(duì)于其中的每個(gè)人,都

他喜歡的1?3個(gè)地方.2.創(chuàng)建多個(gè)字典,對(duì)于每個(gè)字典,都使用一個(gè)寵物的名稱來給給它命名;在每個(gè)字典中,包含寵物的類型及其主人的名字。將這這些字典

在一個(gè)名為pets的列表中,再遍歷該列表,并將寵物的所有信息都打印出來。集合(無序)集合set是基本數(shù)據(jù)類型的一種,它有可變集合(set)和不可變集合(frozenset)兩種。創(chuàng)建集合set、集合set添加、集合刪除、交集、并集、差集的操作都是非常實(shí)用的方法。不是成員關(guān)系initializerarray.array呢淺拷貝與深拷貝07可變(mutable)參數(shù)和不可變(immutable)參數(shù)

Python中string、tuple和number是不可變對(duì)象,而dict、list等是可變對(duì)象;不可變對(duì)象在進(jìn)行重新賦值的時(shí)候,實(shí)際上是將原始值丟棄,將變量指向一個(gè)新值;可變對(duì)象的可變性實(shí)質(zhì)上是指更改可變對(duì)象中的子對(duì)象,比如list中的item元素的更改。Python淺拷貝與深拷貝直接賦值:其實(shí)就是對(duì)象的 (別名)。a

=

[1,2,3]b

=

[11,22,33]c

=

[111,222,333]var01

=[a,b,c]var02

=var01print(var01)print(var02)print(id(var01)) #id獲取變量在內(nèi)存中的地址print(id(var02))print('

')一個(gè)新元素a.append(4) #

aprint(var01)print(var02)print(id(var01))print(id(var02))Python淺拷貝與深拷貝淺拷貝:不拷貝子對(duì)象(針對(duì)子對(duì)象中的item),當(dāng)子對(duì)象進(jìn)行更改的時(shí)候,原始對(duì)象也會(huì)改變。常見操作:列表的切片[:]操作、list()操作,字典的

copy()函數(shù)、copy模塊的

copy()函數(shù)(兩個(gè)一模一樣的雙胞胎)Python淺拷貝與深拷貝深拷貝:會(huì)拷貝子對(duì)象,當(dāng)對(duì)原始對(duì)象子對(duì)象進(jìn)行更改的時(shí)候,原始對(duì)象不會(huì)改變。常見操作:copy模塊的deepcopy()函數(shù)舉例:importcopylist_0=["A","B",["C","D"],"E"]list_1=copy.copy(list_0)list_2=list_0.copy()list_3=list_0[:]list_4=list(list_0)#---深拷貝的拷貝方式---

list_d=copy.deepcopy(list_0)#---深淺拷貝的區(qū)別---

#1.對(duì)第一層數(shù)據(jù)進(jìn)行賦值list_0[0]="X0"list_1[0]="X1"list_2[0]="X2"list_3[0]="X3"list_4[0]="X4"list_d[0]="Xd"#打印結(jié)果:理所當(dāng)然,所有列表都發(fā)生了變化#list_0:['X0','B',['C','D'],E]#list_1:['X1','B',['C','D'],E]Python淺拷貝與深拷貝思路一:利用切片操作和list方法拷貝等就叫淺拷貝,只是拷貝了最的對(duì)象本身,

的元素都只是拷貝了一個(gè)

而已。思路二:利用copy中的deepcopy方法進(jìn)行拷貝就叫做深拷貝,

和元素都進(jìn)行了拷貝對(duì)象本身,而不是

。但是對(duì)于數(shù)字,字符串和元組類型對(duì)象,沒有被拷貝的說法,即便是用深拷貝,查看id的話也是一樣的,如果對(duì)其重新賦值,也只是新創(chuàng)建一個(gè)對(duì)象,替換掉舊的而已。列表推導(dǎo)式08推導(dǎo)式列表推導(dǎo)式:列表推導(dǎo)式(listcomprehension)是利用其它列表創(chuàng)建新列表的式,工作原理類似for循環(huán),即可對(duì)得到的元素進(jìn)行轉(zhuǎn)換變形,其基本格式如下(可以有多個(gè)for語句)集合推導(dǎo)式:集合推導(dǎo)式跟列表推導(dǎo)式非常相似,唯一區(qū)別在于用{}代替[]。其基本格式如下:{

expr

for

value

in

collection

if

condition

}[expr

for

value

in

collection

ifcondition]expr可以使for循環(huán)的變量,也可以是表達(dá)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論