版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章
Python
復(fù)雜數(shù)據(jù)類型列表字典元組集合與嵌套思維導(dǎo)圖知識目標(biāo)掌握掌握掌握熟練掌握列表的基本操作和方法12掌握元組的基本操作和方法了解集合與嵌套的基本操作4熟練掌握字典的基本操作和方法3技能目標(biāo)掌握掌握掌握熟練掌握列表的編程應(yīng)用12掌握元組的編程應(yīng)用學(xué)會復(fù)雜數(shù)據(jù)的嵌套使用4熟練掌握字典的編程應(yīng)用3思政目標(biāo)1.
通過不同數(shù)據(jù)類型的對比分析,引導(dǎo)學(xué)生提升總結(jié)歸納能力和批判性思維養(yǎng)成。2.“民族品牌當(dāng)自強(qiáng)”,理解創(chuàng)新驅(qū)動發(fā)展戰(zhàn)略的深刻內(nèi)涵。3.
通過“中國第一程序員求伯君—個人開發(fā)WPS擊敗200人的微軟圖”的學(xué)習(xí),了解優(yōu)秀程序員需要具備的品質(zhì)。目錄元組3.23.1列表3.3字典3.4集合與嵌套知識架構(gòu)3.1列表1創(chuàng)建和訪問列表2列表的基本操作3列表的函數(shù)和方法4學(xué)生實踐練習(xí)3.1列表1
創(chuàng)建和訪問列表
列表是一種有序的集合,可以隨時添加和刪除其中的元素,列表中值的切割可以用變量[頭下標(biāo):尾下標(biāo)]的方式,截取相應(yīng)的列表,從左到右索引默認(rèn)從0開始遞增,從右到左索引默認(rèn)從?1開始遞減,下標(biāo)可以為空,表示取到頭或尾。1.創(chuàng)建列表列表名=[值1,值2,…,值N]例如,定義如下列表:list1=['Tom',786,2.23,'Trump',70.2]list2=[1,2,3,4,5]2.獲取列表元素個數(shù)列表元素的個數(shù)使用len()函數(shù)實現(xiàn),代碼如下:len(list1)3.1列表1
創(chuàng)建和訪問列表
3.訪問列表元素1)
使用索引訪問列表元素從左到右索引默認(rèn)從0開始遞增,從右到左索引默認(rèn)從?1開始遞減。例如,現(xiàn)有一個列表[a,b,c,d,e,f],其索引如圖3.1所示?!臼纠?.1】從左往右順序訪問list1的5個元素。list1=['Tom',786,2.23,'Trump',70.2]print(list1[0],list1[1],list1[2],list1[3],list1[4])#輸出5個元素3.1列表1
創(chuàng)建和訪問列表
通過索引訪問列表元素的運(yùn)行結(jié)果如圖所示。
除了從左往右訪問列表元素,還可以從右往左訪問,最后一個元素索引為?1。例如,在示例3.1中加入如下代碼:#從最后一個元素開始,從右往左輸出列表元素print(list1[-1],list1[-2],list1[-3],list1[-4],list1[-5])
列表元素的運(yùn)行結(jié)果如圖3.3所示。3.1列表1
創(chuàng)建和訪問列表
2)使用切片訪問列表元素切片的語法表達(dá)式如下:[start_index:end_index:step]其中,各參數(shù)說明如下:(1)start_index表示起始索引,從0開始,可以是正數(shù)或負(fù)數(shù),為空時表示取到頭或尾。(2)end_index表示結(jié)束索引,為空時表示取到頭或尾。(3)step表示步長,步長不能為0,且默認(rèn)值為1。
切片操作是指按照步長,截取從起始索引到結(jié)束索引,但不包含結(jié)束索引(也就是結(jié)束索引減1)的所有元素,但是注意為空時,可以取到頭或尾。如果截取圖3.1中的元素,切片截取元素如圖3.4所示。3.1列表1
創(chuàng)建和訪問列表
例如,截取示例3.1中的list1的前3個元素,代碼如下:#截取列表前3個元素print(list1[0:3])截取列表前3個元素的運(yùn)行結(jié)果如圖:#截取列表后2個元素print(list1[-2:])3.1列表1
創(chuàng)建和訪問列表
如果只需要獲取倒數(shù)第2個元素,用切片實現(xiàn),代碼如下:#截取列表最后1個元素print(list1[-2:-1])
如果想獲取的元素不是連續(xù)的,需要隔一個或者多個獲取,應(yīng)在切片后再加上一個參數(shù),該參數(shù)用于指定元素間隔的個數(shù)。例如,獲取示例3.1中前4個元素中每2個取1個,代碼如下:#前4個元素,每2個取1個print(list1[:4:2])3.1列表1
創(chuàng)建和訪問列表
例如,在示例3.1中將所有元素每隔3個獲取1個元素,代碼如下:#所有元素,每3個取1個print(list1[::3])
所有元素每3個取1個的運(yùn)行結(jié)果如圖3.8所示。3.1列表1
創(chuàng)建和訪問列表
4.遍歷列表元素
在Python中遍歷列表的方法有4種,分別如下:(1)使用for循環(huán)。(2)使用Python內(nèi)置的enumerate()函數(shù)。(3)使用iter()迭代器。(4)使用range()函數(shù)。
接下來,介紹具體遍歷列表的操作。1)使用for循環(huán)
例如,現(xiàn)有列表list01=[2,3,4],使用for循環(huán)遍歷輸出元素,代碼如下:list01=[2,3,4]fornuminlist01:
print(num)3.1列表1
創(chuàng)建和訪問列表
2)使用Python內(nèi)置的enumerate()函數(shù)Python內(nèi)置的enumerate()函數(shù)的語法如下:enumerate(sequence,[start=0])
例如,使用enumerate()函數(shù)遍歷列表list01,代碼如下:list01=[2,3,4]foriinenumerate(list01):
print(i)3)使用iter()迭代器iter()迭代器用來生成迭代器,返回迭代對象,其使用語法如下:iter(object[,sentinel])
例如,使用iter()迭代器遍歷列表list01,代碼如下:list01=[2,3,4]foriiniter(list01):
print(i)3.1列表1
創(chuàng)建和訪問列表
4)使用range()函數(shù)
在Python中,range()函數(shù)返回類型是ndarray,可用list()函數(shù)返回一個整數(shù)列表,一般用在for循環(huán)中。其使用語法如下:range(start,stop[,step])
在上述語法中,參數(shù)函數(shù)如下:(1)start表示計數(shù)開始,默認(rèn)從0開始,如range(5)等價于range(0,5)。(2)end表示計數(shù)到end結(jié)束,但不包括end,如range(0,5)是[0,1,2,3,4],沒有5。(3)step表示步長,默認(rèn)為1,如range(0,5)等價于range(0,5,1)。
例如,使用range()函數(shù)遍歷列表list01,代碼如下:list01=[2,3,4]foriinrange(len(list01)):
print(i,list01[i])3.1列表2
列表的基本操作1.復(fù)制列表
將索引設(shè)置為冒號“:”,可以復(fù)制列表。例如,將示例3.1中的list1進(jìn)行復(fù)制,操作如下:#復(fù)制列表list1_copy=list1[:]print(list1_copy)復(fù)制列表的運(yùn)行結(jié)果如圖:3.1列表2
列表的基本操作2.合并列表
加號“+”是列表合并運(yùn)算符,例如,將示例3.1中的list1和list1_copy兩個列表進(jìn)行合并,代碼如下:#合并列表list2=list1+list1_copyprint(list2)合并列表的運(yùn)行結(jié)果如圖所示:3.1列表2
列表的基本操作3.更新列表
列表的更新實際上是將原列表中的元素重新復(fù)制,例如,將示例3.1中的list1的第一個元素“Tom”改成“Jack”,操作如下:#原列表元素print("原列表為:",list1)#將Tom改成Jacklist1[0]="Jack"print("新列表為:",list1)更新列表的運(yùn)行結(jié)果如圖所示。3.1列表2
列表的基本操作4.刪除列表在列表中刪除元素,主要分為以下3種情況:(1)根據(jù)目標(biāo)元素所在位置的索引值進(jìn)行刪除,可使用del語句。(2)根據(jù)元素的值進(jìn)行刪除,可使用列表(list類型)提供的remove()方法。(3)將列表中所有元素全部刪除,可使用列表(list類型)提供的clear()方法。具體操作如下:1)根據(jù)索引進(jìn)行刪除del語句是Python中專門用于執(zhí)行刪除操作的語句,不僅可用于刪除列表的元素,也可用于刪除變量等。3.1列表2
列表的基本操作例如,若指定刪除示例3.1中l(wèi)ist1中的最后一個元素,代碼如下:#原列表元素print("原列表為:",list1)#使用索引刪除最后一個元素dellist1[-1]print("刪除最后一個元素后:",list1)使用索引刪除最后一個元素的運(yùn)行結(jié)果如圖3.12所示。3.1列表2
列表的基本操作
另外,del語句還可以用來刪除列表,例如,刪除示例3.1中的list1_copy,代碼如下:#刪除列表dellist1_copyprint(list1_copy)使用del語句刪除列表的運(yùn)行結(jié)果如圖3.13所示。3.1列表2
列表的基本操作2)根據(jù)元素值進(jìn)行刪除
Python提供了remove()方法來刪除列表元素,該方法并不是根據(jù)索引來刪除元素的,而是根據(jù)元素本身的值來執(zhí)行刪除操作的。例如,刪除示例3.1中值為“Tom”的元素,代碼如下:#原列表元素print("原列表為:",list1)#刪除指定值的元素list1.remove("Tom")print("刪除‘Tom’后:",ist1)刪除指定值的元素的運(yùn)行結(jié)果如圖3.14所示:3.1列表2
列表的基本操作3)清空列表所有元素
clear()方法用于清空列表的所有元素。例如,在示例3.1中,將list1_copy的列表數(shù)據(jù)清空,然后刪除,代碼如下:list1=['Tom',786,2.23,'Trump',70.2]#清空列表list1.clear()print(list1)清空列表的運(yùn)行結(jié)果如圖3.15所示:3.1列表3
列表的函數(shù)和方法3.1列表3
列表的函數(shù)和方法3.1列表3
列表的函數(shù)和方法list=[10,9,7,8]list.append(9)#在列表結(jié)尾處添加一個元素print("原列表:",list)list.sort(reverse=False)#reverse=False表示升序排列,True表降序排列print("使用sort()函數(shù)后list列表:",list)#使用sort()函數(shù)后原列表未發(fā)生改變print("降序排列:",list)print("獲取9出現(xiàn)的次數(shù):",list.count(9))#獲取一個數(shù)值在列表中出現(xiàn)的次數(shù)list.remove(9)#列表中刪除9這個元素print("刪除9這個元素:",list)print("獲取起始位置0到結(jié)束位置2中元素8所在的位置:",list.index(8,0,2))#獲取起始位置0到結(jié)束位置2中元素8所在的位置list.pop(0)#刪除第一個位置上的元素,和remove函數(shù)不同,remove()表示刪除某個元素print("刪除第一個位置上的元素:",list)list.extend([3,4,13])#將兩個列表元素合并print("將兩個列表元素合并:",list)3.1列表4
學(xué)生實踐練習(xí)1.需求說明
在TIOBE2017年6月編程語言排行榜中,Python打敗C#語言排名第4位,占據(jù)4.333%的比例。前5位語言分別為Java、C、C++、Python、C#。請完成以下步驟:(1)定義3個變量,分別存儲Python語言的名稱、排名和占據(jù)比例。(2)定義一個列表,按排名順序存儲前5位語言名稱。(3)分別輸出列表中的前3門語言、排名第3和第4位的語言、排名第3位之后的語言。2.實現(xiàn)思路(1)聲明不同的變量分別保存名稱、排名和占據(jù)比例。(2)使用輸出函數(shù)輸出Python的名稱和排名等。(3)通過[頭下標(biāo):尾下標(biāo)]的方式,截取列表中的值及列表函數(shù)的使用。知識架構(gòu)3.2元組1創(chuàng)建元組2訪問元組元素3刪除元組4元組的其他操作5學(xué)生實踐練習(xí)3.2元組1
創(chuàng)建元組【語法】
元組是與列表非常類似的另一個序列數(shù)據(jù)類型。列表用中括號“[]”標(biāo)識,而元組用小括號“()”或不加小括號“()”進(jìn)行標(biāo)識。列表的元素可以通過“列表名[下標(biāo)]=元素值”的方式修改,但元組的元素不可以被修改,元素也不能被刪除。
元組的創(chuàng)建很簡單,只需要在小括號中添加元素,若有多個元素,以逗號“,”分隔。元組名=(值1,值2,…,值N)或者:元組名=值1,值2,…,值N例如,定義一個元組,代碼如下:tuple1=('physics','chemistry',1997,2000)tuple2=1,2,3,4,53.2元組1
創(chuàng)建元組
在創(chuàng)建元組時,需要注意以下3點(diǎn):(1)元組與字符串類似,下標(biāo)索引從0開始,可以進(jìn)行截取和組合等。(2)創(chuàng)建空元組,直接小括號即可,如tup=()。(3)元組中只有一個元素時,需要在元素后面添加逗號,否則會將這一個元素按照單個字符分隔存儲。例如,創(chuàng)建只有一個元素“Tom”的元組tup1,代碼如下:#加逗號,Tom整個會被當(dāng)作一個元素tup1=("Tom",)print(tup1[0])#不加逗號,Tom會被分割成一個個字母,單獨(dú)做元素tup2=("Tom")print(tup2[0])創(chuàng)建僅有一個元素的元組的運(yùn)行結(jié)果如圖3.18所示。3.2元組2
訪問元組元素
1.訪問單個元組元素
與列表的訪問方式相同,元組也可以使用下標(biāo)索引和切片來訪問元組中的值?!臼纠?.3】使用索引訪問元組元素。tuple=('Tom',786,2.23,'Trump',70.2)tinytuple=123,'John'print("完整元組:",tuple)print("元組的第一個元素:",tuple[0])print("第二個至第四個但不包含第四個的元素:",tuple[1:3])print("從第三個開始至元組末尾的所有元素:",tuple[2:])print("輸出元組兩次:",tinytuple*2)
使用索引訪問元組元素的運(yùn)行結(jié)果如圖所示。3.2元組2
訪問元組元素
另外,元組中的元素值是不允許修改的,但可以對元組進(jìn)行連接組合。例如,在示例3.3中將tuple和tinytuple兩個元組進(jìn)行組合,添加代碼如下:#組合元組print("組合的元組:",tuple+tinytuple)組合元組的運(yùn)行結(jié)果如圖3.20所示。3.2元組2
訪問元組元素
2.遍歷元組元素
元組和列表的遍歷非常類似,也可以使用4種方式遍歷,分別是for循環(huán)、enumerate()函數(shù)、iter()迭代器和range()函數(shù)。例如,使用for循環(huán)遍歷示例3.3中的tuple元組,代碼如下:tuple=('Tom',786,2.23,'Trump',70.2)#遍歷元組forxintuple:print(x,end="")#加end=""可不換行3.2元組3
刪除元組
元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組。del元組名【語法】例如,刪除示例3.3中的tinytuple元組,代碼如下:#刪除元組deltinytupleprint(tinytuple)#此時tinytuple已不存在,所以報錯3.2元組4
元組的其他操作
1.元組運(yùn)算符
與字符串一樣,元組之間可以使用“+”和“*”進(jìn)行運(yùn)算,這表示元組可以組合和復(fù)制,運(yùn)算后會生成一個新的元組。常見的元組運(yùn)算符操作見表3.3。3.2元組4
元組的其他操作
2.元組內(nèi)置函數(shù)元組中包含的內(nèi)置函數(shù)見表3.4。3.2元組4
元組的其他操作
【示例3.4】使用內(nèi)置函數(shù)操作元組。tup1=(12,34,56)print("計算元組元素個數(shù):",len(tup1))print("返回元組中元素最大值:",max(tup1))print("返回元組中元素最小值:",min(tup1))seq=['physics','chemistry',1997,2000]print("將列表轉(zhuǎn)換為元組:",tuple(seq))3.2元組5
學(xué)生實踐練習(xí)
1.需求說明
創(chuàng)建元組并訪問元組元素,具體要求如下:(1)創(chuàng)建兩個元組,每個元組中包含用戶的姓名、性別(F/M)、年齡、身高等信息。(2)使用索引訪問元組元素,訪問第一個元組中第二個和倒數(shù)第二個的元素信息。(3)使用切片訪問元組元素,訪問第一個元組中第一個和第三個的元素信息。(4)使用運(yùn)算符將兩個元組復(fù)制并連接。2.實現(xiàn)思路(1)元組信息來源可以使用用戶熟悉的人物信息,此處使用“Tom”和“Jack”兩人的數(shù)據(jù)創(chuàng)建元組。(2)使用索引訪問時要注意,從左往右索引從0開始遞增,從右往左索引從?1開始遞減,因此第二個元素的索引應(yīng)為1,倒數(shù)第二個的索引應(yīng)為?2。(3)使用切片訪問元組時,應(yīng)注意切片的范圍是包下不包上,如果有間隔,還應(yīng)在原切片后加上冒號和間隔個數(shù)。因此,此處的第一個和第三個元素的切片應(yīng)寫成[0:3:2],因為元素數(shù)量只有4個,所以還可以簡寫成[::2]。(4)使用“*”進(jìn)行元組復(fù)制,使用“+”進(jìn)行元組連接。知識架構(gòu)3.3字典1創(chuàng)建字典2訪問字典元素3修改字典4刪除字典5字典的函數(shù)和方法6學(xué)生實踐練習(xí)3.3字典1
創(chuàng)建字典
字典以鍵值對的方式存儲數(shù)據(jù),以兩組分別為key和value的方式保存數(shù)據(jù),key和value之間存在一對一的關(guān)系,通過指定的key總能找到唯一的value值。字典結(jié)構(gòu)如圖3.24所示。
字典用大括號“{}”標(biāo)識,字典元素使用“key:value”的方式表示,多組元素之間用“,”分隔。3.3字典1
創(chuàng)建字典
【語法】dict={key1:value1,key2:value2}例如,定義一個字典,語句如下:dict={'Name':'Trumple','Age':7,'sex':'男'}3.3字典2
訪問字典元素
1.訪問單個字典元素
字典數(shù)據(jù)通過“字典名稱[key]”的方式訪問?!臼纠?.5】定義一個字典并訪問其中“Name”鍵對應(yīng)的值。#定義一個字典對象dict={'Name':'Trumple','Age':7,'sex':'男'}print("字典為:",dict)#訪問字典中的值print("key為Name的值為:",dict['Name'])字典的使用的運(yùn)行結(jié)果如圖3.25所示。3.3字典3
遍歷字典元素
字典的遍歷主要借助于字典中的key值,常用的遍歷方式是借助于for循環(huán)。例如,遍歷示例3.5中的dict字典,代碼如下:#定義一個字典對象dict={'Name':'Trumple','Age':7,'sex':'男'}#遍歷元素forkeyindict:
print(dict[key])3.3字典4
修改字典
修改字典,可以是修改已有鍵對應(yīng)的值,還可以是增加新元素。例如,在示例3.5中,將“Age”鍵對應(yīng)的值改為37,并添加一個新元素"favorites":"游泳",代碼如下dict={'Name':'Trumple','Age':7,'sex':'男'}print("原字典為:",dict)#修改字典中的值dict['Age']=37#如果對應(yīng)的鍵不存在,就添加該記錄dict['favorites']='游泳'print("新字典為:",dict)
運(yùn)行結(jié)果如下:3.3字典5
刪除字典
關(guān)于字典的刪除操作,主要分為以下3種:(1)使用del語句刪除指定元素。(2)使用del語句刪除整個字典。(3)使用clear()方法清空字典所有元素。【示例3.6】在示例3.5的基礎(chǔ)上,首先刪除鍵是'Name'的元素,然后清空字典,最后刪除字典dt={'Name':'Trumple','Age':7,'sex':'男'}print("原字典為:",dt)#刪除鍵是'Name'的元素deldt['Name']print("刪除鍵是'Name'的元素后:",dt)#清空字典dt.clear()print("清空字典后:",dt)#刪除字典deldtprint("刪除字典后:",dt)3.3字典5
刪除字典
在示例3.6中,刪除整個字典后,輸出字典會顯示錯誤信息:name'dt'isnotdefined。注意在示例3.5中字典名字為dict,使用del刪除,代碼如下:#定義一個字典對象dict={'Name':'Trumple','Age':7,'sex':'男'}print("字典為:",dict)#刪除字典deldictprint("刪除字典后:",dict)刪除dict字典會出現(xiàn)如圖效果:3.3字典6
字典的函數(shù)和方法字典包含的函數(shù)見表3.5。3.3字典6
字典的函數(shù)和方法字典包含的方法見表3.6。3.3字典7
學(xué)生實踐練習(xí)1.需求說明
定義一組顏色(blue,yellow,red,white,black),每種顏色都不能被修改。分別獲取排在前3位的顏色、第4到第5位的顏色及第3位后的顏色。最后在該組顏色中添加(gray,orange)兩種顏色。定義一個保存國家及其對應(yīng)首都的數(shù)據(jù)結(jié)構(gòu),例如,中國—北京、美國—華盛頓和英國—倫敦。根據(jù)國家可以查詢出對應(yīng)的首都,也可以添加、修改和刪除一組數(shù)據(jù)。2.實現(xiàn)思路(1)Python數(shù)據(jù)類型中只有元組的元素不能被修改,因此將這一組顏色保存到元組中。(2)通過[頭下標(biāo):尾下標(biāo)]的方式截取元組中的值及列表函數(shù)的使用。(3)Python數(shù)據(jù)類型中用字典保存具有映射關(guān)系的數(shù)據(jù)。定義一個字典對象就可以保存國家及其對應(yīng)首都的數(shù)據(jù)。知識架構(gòu)3.4集合與嵌套1集合24種類型的相互比較3復(fù)雜類型轉(zhuǎn)換4嵌套5學(xué)生實踐練習(xí)3.4集合與嵌套1
集合
集合(Set)是一個無序的不重復(fù)元素序列,可以使用大括號{}或者set()函數(shù)創(chuàng)建集合。但是需要注意的是,創(chuàng)建一個空集合必須用set()而不可以用{},因為{}會默認(rèn)創(chuàng)建一個空字典。
【語法】parame={value1,value2,...}
或set(value)在上述語法結(jié)構(gòu)中,參數(shù)value可以是列表、元組、字典等。3.4集合與嵌套1
集合
1.創(chuàng)建集合
創(chuàng)建空集合只能使用set()函數(shù),而創(chuàng)建有具體值的集合,則使用{}或者set()函數(shù)都可以。
【示例3.7】創(chuàng)建空集合和有值的集合。#創(chuàng)建一個空集合set1=set()print("空集合:",set1)#創(chuàng)建一個具有數(shù)據(jù)的集合set2={1,'a','apple',11.22}print("集合:",set2)#創(chuàng)建一個列表做參數(shù)的集合set3=set([1,2,3])print("集合(列表作參數(shù)):",set3)#集合具有去重功能set4={'apple','orange','apple','pear','orange','banana'}print("集合(去重功能):",set4)3.4集合與嵌套1
集合
創(chuàng)建集合的運(yùn)行結(jié)果如圖3.30所示。
在示例3.7中,創(chuàng)建的集合set4中有重復(fù)的元素“apple”和“orange”,但在輸出的時候,并沒有重復(fù)輸出,說明集合具有去重功能。3.4集合與嵌套2
集合的基礎(chǔ)操作
集合的操作主要包括判斷元素是否在集合內(nèi)、添加元素、刪除元素、計算元素個數(shù)、清空集合等。1)判斷元素是否在集合內(nèi)
【語法】xins
上述語法表示判斷元素x是否在集合s中,若存在,則返回True,若不存在,則返回False。set4={'apple','orange','apple','pear','orange','banana'}#判斷banana是否在集合set4中print("anana是否在集合set4中?")print("banana"inset4)
例如,在示例3.7中,判斷“banana”是否在集合set4中,代碼如下:3.4集合與嵌套2
集合的基礎(chǔ)操作
判斷元素是否在集合內(nèi)的運(yùn)行結(jié)果如圖3.31所示。
2)添加元素往集合中添加元素,有以下兩種方法:(1)add()方法。例如,將數(shù)據(jù)x添加到集合s中去,使用方式如下:s.add(x)
(2)update()方法??梢詫⒘斜?、元組、字典等添加到集合中去,使用方式如下:s.update(x)3.4集合與嵌套2
集合的基礎(chǔ)操作
【示例3.8】在示例3.7的基礎(chǔ)上,添加字符串、字典、列表到集合set2中。set2={1,'a','apple',11.22}#將值添加到集合中,如果值存在,則不做任何操作set2.add('car')print(set2)#另外一種添加方式,參數(shù)可以是列表、元組、字典等#添加字典set2.update({2,3})print(set2)#添加列表set2.update([1,4],[5,6])print(set2)3.4集合與嵌套2
集合的基礎(chǔ)操作
3)移除元素
【語法】s.remove(x)
或s.discard(x)
在上述語法中,兩種方法都表示將元素x從集合s中移除,但是使用remove()方法時,如果元素不存在,則會發(fā)生錯誤;使用discard()方法時,如果元素不存在,則不會發(fā)生錯誤。例如,在示例3.8中,移除set2中的“apple”,代碼如下:3.4集合與嵌套2
集合的基礎(chǔ)操作#移除apple元素set2.remove("apple")print(set2)print("discard()方法:移除set2中不存在的元素hello,不會報錯")set2.discard("hello")print("remove()方法:移除set2中不存在的元素hello,會報錯")set2.remove("hello")
運(yùn)行結(jié)果:3.4集合與嵌套2
集合的基礎(chǔ)操作print("原集合:",set2)#隨即刪除一個元素print("隨機(jī)刪除一個元素:")set2.pop()print(set2)
另外,可以設(shè)置隨機(jī)刪除集合中的一個元素,使用pop()方法實現(xiàn)。例如,隨機(jī)刪除示例3.8中的set2的一個元素,代碼如下:3.4集合與嵌套2
集合的基礎(chǔ)操作
【示例3.8】在示例3.7的基礎(chǔ)上,添加字符串、字典、列表到集合set2中。set2={1,'a','apple',11.22}#將值添加到集合中,如果值存在,則不做任何操作set2.add('car')print(set2)#另外一種添加方式,參數(shù)可以是列表、元組、字典等#添加字典set2.update({2,3})print(set2)#添加列表set2.update([1,4],[5,6])print(set2)3.4集合與嵌套2
集合的基礎(chǔ)操作
4)計算元素個數(shù)
計算集合中元素的個數(shù)需要使用len()函數(shù),例如,計算示例3.8中的set2的元素個數(shù),代碼如下:print("原集合:",set2)#計算元素個數(shù)print("元素個數(shù):",len(set2))
計算元素個數(shù)的運(yùn)行結(jié)果如圖3.35所示。3.4集合與嵌套2
集合的基礎(chǔ)操作
5)清空集合
與清空字典操作類似,清空集合需使用clear()方法。例如,清空示例3.8中的set2集合,代碼如下:print("原集合:",set2)#清空集合set2.clear()print("清空后:",set2)
清空集合的運(yùn)行結(jié)果如圖3.36所示。3.4集合與嵌套2
集合的基礎(chǔ)操作
6)刪除集合
刪除集合需使用del語句。例如,在示例3.8基礎(chǔ)上,刪除set2集合,代碼如下:print("原集合:",set2)delset2print("刪除后:",set2)
刪除集合的運(yùn)行結(jié)果如圖3.37所示。3.4集合與嵌套2
集合的基礎(chǔ)操作
3.遍歷集合元素
遍歷集合set和遍歷列表list類似,都可以通過for循環(huán)實現(xiàn)。例如,遍歷示例3.8中的集合set2中的元素,代碼如下:set2={1,'a','apple',11.22}#遍歷元素fornameinset2:print(name)3.4集合與嵌套3
4種類型的相互比較
Python中4種復(fù)雜數(shù)據(jù)類型分別是列表、元組、字典和集合,其區(qū)別詳見表3.7。3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
常用的類型轉(zhuǎn)換函數(shù)見表3.8。3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
1.列表轉(zhuǎn)為其他類型list1=[6,7,7,8,8,9]print("1.原列表為:",list1)#列表轉(zhuǎn)集合(去重)set1=set(list1)print("轉(zhuǎn)成集合為:",set1)#兩個列表轉(zhuǎn)字典list2=['key1','key2','key3']list3=['1','2','3']print("2.兩個列表分別為:\n\t",list2,"\n\t",list3)dict1=dict(zip(list2,list3))print("兩個列表轉(zhuǎn)成字典為:",dict1)#嵌套列表轉(zhuǎn)字典list4=[['key1','value1'],['key2','value2'],['key3','value3']]print("3.嵌套列表為:",list4)dict2=dict(list4)print("嵌套列表轉(zhuǎn)成字典為:",dict2)3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
列表轉(zhuǎn)為其他類型的運(yùn)行結(jié)果如圖3.38所示。3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
2.元組轉(zhuǎn)為其他類型元組具有不可修改的特點(diǎn),可以將其轉(zhuǎn)換為列表、集合、字符串和字典等。tuple1=(1,2,3)print("1.元組為:",tuple1)#元組轉(zhuǎn)列表list1=list(tuple1)print("轉(zhuǎn)換為列表:",list1)#元組轉(zhuǎn)字典#兩個元組轉(zhuǎn)字典tuple3=('key1','key2','key3')tuple4=('1','2','3')print("2.兩個元組分別為:\n\t",tuple3,"\n\t",tuple4)dict1=dict(zip(tuple3,tuple4))print("兩個元組轉(zhuǎn)成字典為:",dict1)#嵌套元組轉(zhuǎn)字典tuple5=(('key1','value1'),('key2','value2'),('key3','value3'))print("3.嵌套元組為:",tuple5)dict2=dict(tuple5)print("嵌套元組轉(zhuǎn)成字典為:",dict2)3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
元組轉(zhuǎn)為其他類型的運(yùn)行結(jié)果如圖3.39所示。3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
3.字典轉(zhuǎn)為其他類型1)鍵或者值單獨(dú)轉(zhuǎn)換為其他類型a={'a':1,'b':2,'c':3}print('字典為:',a)#字典中的key轉(zhuǎn)換為列表list1=list(a.keys())print('字典中的key轉(zhuǎn)換為列表:',list1)#字典中的key轉(zhuǎn)換為元組tup1=tuple(a.keys())print('字典中的key轉(zhuǎn)換為元組:',tup1)#字典中的key轉(zhuǎn)換為集合set1=set(a.keys())print('字典中的key轉(zhuǎn)換為集合:',set1)#字典中的value轉(zhuǎn)換為列表list2=list(a.values())print('字典中的value轉(zhuǎn)換為列表:',list2)#字典中的value轉(zhuǎn)換為元組tup2=tuple(a.values())print('字典中的value轉(zhuǎn)換為元組:',tup2)#字典中的value轉(zhuǎn)換為集合set2=set(a.values())print('字典中的value轉(zhuǎn)換為集合:',set2)3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
字典中的鍵和值單獨(dú)轉(zhuǎn)換為其他類型的運(yùn)行結(jié)果如圖3.40所示。3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
2)字典與JSON互轉(zhuǎn)在Python語言中,JSON數(shù)據(jù)與dict字典之間的轉(zhuǎn)化是必不可少的操作。Python自帶JSON庫,編碼時應(yīng)使用importjson導(dǎo)入。在JSON模塊中有兩個方法用于與字典互轉(zhuǎn)。(1)loads():將JSON數(shù)據(jù)轉(zhuǎn)換成dict數(shù)據(jù)。(2)dumps():將dict數(shù)據(jù)轉(zhuǎn)換成JSON數(shù)據(jù)。importjsondic1={'name':'many','age':10,'sex':'male'}print('1.字典為:',dic1)#字典轉(zhuǎn)換為JSONj=json.dumps(dic1)print('字典轉(zhuǎn)換為JSON數(shù)據(jù):',j)#JSON轉(zhuǎn)換為字典j='{"name":"007","age":28,"sex":"male"}'print('2.JSON數(shù)據(jù)為:',dic1)dic2=json.loads(j)print('JSON數(shù)據(jù)轉(zhuǎn)換為字典:',dic2)print('JSON數(shù)據(jù)轉(zhuǎn)換為字典后,name值為:',dic2["name"])3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
字典與JSON互轉(zhuǎn)的運(yùn)行結(jié)果如圖3.41所示。3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
在示例3.12中,若將字典dic1中的“sex”對應(yīng)值改為“男”,轉(zhuǎn)換成JSON數(shù)據(jù)會輸出“\u7537”,如果想原樣輸出,應(yīng)同示例3.5,在進(jìn)行JSON轉(zhuǎn)換時,設(shè)置dumps()方法的參數(shù)ensure_ascii為False,代碼修改如下:importjsondic1={'name':'many','age':10,'sex':'男'}print('1.字典為:\n',dic1)#字典轉(zhuǎn)換為JSONj=json.dumps(dic1)print('轉(zhuǎn)換為json數(shù)據(jù)(不加ensure_ascii):\n',j)j01=json.dumps(dic1,ensure_ascii=False)print('轉(zhuǎn)換為json數(shù)據(jù)(ensure_ascii):\n',j01)3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
dumps()方法參數(shù)設(shè)置的運(yùn)行結(jié)果如圖3.42所示。3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
3)字典中的鍵和值互相轉(zhuǎn)換字典中的鍵和值互相轉(zhuǎn)換,需要使用for循環(huán)語句,例如,將示例3.12中的字典dic1的鍵值互轉(zhuǎn),代碼如下:dic1={'name':'many','age':10,'sex':'male'}print('字典為:',dic1)dic1_new={value:keyforkey,valueindic1.items()}print("key和value轉(zhuǎn)換后的字典為:",dic1_new)3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
字典中的key和value互相轉(zhuǎn)換的運(yùn)行結(jié)果如圖3.43所示。3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
4)集合轉(zhuǎn)換為其他類型
集合使用大括號“{}”包裹元素,可以轉(zhuǎn)換為列表、元祖、字符串和字典等類型,具體操作見示例3.13。#兩個集合轉(zhuǎn)字典set3={'key1','key2','key3'}set4={'1','2','3'}print("兩個集合分別為:\n\t",set3,"\n\t",set4)dict1=dict(zip(set3,set4))print("兩個集合轉(zhuǎn)成字典為:",dict1)3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
5)字符串轉(zhuǎn)換為其他類型
字符串可以使用表3.8中的函數(shù),轉(zhuǎn)換為列表、元組、集合、字典等類型,具體操作見示例3.14。print("原字符串為:",s)#字符串轉(zhuǎn)換為列表print("字符串轉(zhuǎn)列表:",list(s))#字符串轉(zhuǎn)換為元組print("字符串轉(zhuǎn)元組:",tuple(s))#字符串轉(zhuǎn)換為集合print("字符串轉(zhuǎn)集合(去重):",set(s))#字符串轉(zhuǎn)換為字典dic2=eval("{'name':'ljq','age':24}")print("字符串轉(zhuǎn)字典:",dic2)3.4集合與嵌套4
復(fù)雜類型轉(zhuǎn)換
字符串轉(zhuǎn)換為其他類型的運(yùn)行結(jié)果如圖3.45所示。3.4集合與嵌套5
嵌套
1.嵌套列表
嵌套列表就是指列表中的元素也是列表,可以使用for或者while循環(huán)依次取出其中的數(shù)據(jù)。嵌套列表仍然符合列表的基本特性,之前學(xué)的方法依舊可以使用。例如,將兩個列表嵌套成一個列表,代碼如下#兩個列表a=['a','b','c']n=[1,2,3]#嵌套成一個列表x=[a,n]print(x)其輸出結(jié)果為[['a','b','c'],[1,2,3]]。以上是簡單的兩層嵌套,還有多層嵌套,3.4集合與嵌套5
嵌套
【示例3.15】讀取一個三層嵌套列表中的元素。#三層嵌套列表m=["a",["b","c",["inner"]]]【示例3.17】#使用該函數(shù)直接解析嵌套列表defprintm(listin):
foriinlistin:
#使用isinstance()函數(shù)來判斷一個i是否是一個列表
ifisinstance(i,list):
printm(i)#循環(huán)讀取
else:
print(i)printm(m)3.4集合與嵌套5
嵌套
2.嵌套字典
嵌套字典是在字典中存儲字典。在讀取嵌套字典的過程中,首先通過key來得到相應(yīng)的value,而相應(yīng)的value又由字典構(gòu)成,需再次利用key作為索引得到value,以此類推訪問最深層級的字典數(shù)據(jù)。一般情況下,在字典中嵌套字典時,代碼會很復(fù)雜。
在實際項目中,如果有多個網(wǎng)站用戶,每個都有獨(dú)特的用戶名,可在字典中將用戶名作為鍵,然后將每位用戶的信息存儲在字典中,并將該字典作為用戶名相關(guān)聯(lián)的值。3.4集合與嵌套5
嵌套
【示例3.16】對每位用戶,我們都存儲了三項信息(名、姓和居住地),訪問所有信息時,需遍歷所有的用戶名,然后訪問與每位用戶相關(guān)聯(lián)的信息字典。3.4集合與嵌套5
嵌套
3.將字典嵌套到列表中
有時候我們希望存儲很多信息,但是這些信息或互相關(guān)聯(lián)或者存儲于一處,而單一的字典無法滿足的時候,我們就可以選擇嵌套。例如,實現(xiàn)多個學(xué)生所上課程信息的集中存儲,首先將學(xué)生信息存為字典,然后將字典放入到列表中,見示例3.17?!臼纠?.17】#定義三個字典dict1={"張三":"C","李四":"Java"}dict2={"王五":"Python","小明":"PHP"}dict3={"小紅":"C++","小蘭":"MVC"}#將字典放入列表中all=[dict1,dict2,dict3]#輸出all,使用for循環(huán)formoreinall:#
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 有關(guān)樹的應(yīng)用的課程設(shè)計
- 2024年雙方行政行為項目評估與反饋合同3篇
- 2024年心理咨詢服務(wù)保密協(xié)議及隱私權(quán)保護(hù)條款3篇
- 2024人力資源管理實習(xí)協(xié)議書(校園版)3篇
- 2024年度高端住宅區(qū)房產(chǎn)中介租賃代理合同3篇
- 2024年自駕游拼車安全準(zhǔn)則3篇
- 2024年版產(chǎn)品研發(fā)保密協(xié)議一
- 2024年標(biāo)準(zhǔn)銷售協(xié)議購銷條款樣本版B版
- 2024年藥店聘請藥師協(xié)議范本詳規(guī)版B版
- 簡易聲控開關(guān)課程設(shè)計
- 浙江省學(xué)軍、鎮(zhèn)海等名校2025屆高考數(shù)學(xué)押題試卷含解析
- 個人消費(fèi)貸款保證合同模板
- 黑龍江省哈爾濱市2023-2024學(xué)年七年級上學(xué)期期末統(tǒng)考學(xué)業(yè)水平調(diào)研測試語文試卷(解析版)
- 社工個人工作述職報告
- 《自動化儀表安裝、調(diào)試施工監(jiān)理實施細(xì)則》
- 《人力資源管理》大學(xué)期末測試題庫500題(含答案)
- 街舞簡介課件教學(xué)課件
- 小紅書食用農(nóng)產(chǎn)品承諾書示例
- GB/T 15934-2024電器附件電線組件和互連電線組件
- 2023上半年四川公務(wù)員考試申論試題(省市卷)
- 施工臨時占人行道施工方案
評論
0/150
提交評論