![PYthon語(yǔ)言程序設(shè)計(jì)課件第4章 組合數(shù)據(jù)類(lèi)型_第1頁(yè)](http://file4.renrendoc.com/view/7c0787d5e1668930090543e10dc305fe/7c0787d5e1668930090543e10dc305fe1.gif)
![PYthon語(yǔ)言程序設(shè)計(jì)課件第4章 組合數(shù)據(jù)類(lèi)型_第2頁(yè)](http://file4.renrendoc.com/view/7c0787d5e1668930090543e10dc305fe/7c0787d5e1668930090543e10dc305fe2.gif)
![PYthon語(yǔ)言程序設(shè)計(jì)課件第4章 組合數(shù)據(jù)類(lèi)型_第3頁(yè)](http://file4.renrendoc.com/view/7c0787d5e1668930090543e10dc305fe/7c0787d5e1668930090543e10dc305fe3.gif)
![PYthon語(yǔ)言程序設(shè)計(jì)課件第4章 組合數(shù)據(jù)類(lèi)型_第4頁(yè)](http://file4.renrendoc.com/view/7c0787d5e1668930090543e10dc305fe/7c0787d5e1668930090543e10dc305fe4.gif)
![PYthon語(yǔ)言程序設(shè)計(jì)課件第4章 組合數(shù)據(jù)類(lèi)型_第5頁(yè)](http://file4.renrendoc.com/view/7c0787d5e1668930090543e10dc305fe/7c0787d5e1668930090543e10dc305fe5.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4.1 組合數(shù)據(jù)類(lèi)型概述Python中組合數(shù)據(jù)類(lèi)型有3類(lèi):序列類(lèi)型、映射類(lèi)型和集合類(lèi)型。序列類(lèi)型是一個(gè)元素向量,元素之間存在先后關(guān)系,通過(guò)索引號(hào)(又稱(chēng)下標(biāo))訪(fǎng)問(wèn)。Python中的序列類(lèi)型主要有字符串(str),列表類(lèi)型(list)和元組類(lèi)型(tuple)等。映射類(lèi)型是一種鍵值對(duì),一個(gè)鍵只能對(duì)應(yīng)一個(gè)值,但是多個(gè)鍵可以對(duì)應(yīng)相同的值,通過(guò)鍵可以訪(fǎng)問(wèn)值,鍵的取值只能是不可變的數(shù)據(jù)類(lèi)型。字典類(lèi)型(dict)是Python中唯一的映射類(lèi)型。集合類(lèi)型是通過(guò)數(shù)學(xué)中的集合概念引進(jìn)的,是一種無(wú)序不重復(fù)的元素集。構(gòu)成集合的元素只能是不可變的數(shù)據(jù)類(lèi)型,例如整型、字符串、元組等,而列表、字典等是可變數(shù)據(jù)類(lèi)型,不能作為集合中的數(shù)據(jù)元素。4.2 列表類(lèi)型列表(list)是Python語(yǔ)言中提供的一種內(nèi)置序列類(lèi)型。列表是由中括號(hào)括起來(lái)的零個(gè)或多個(gè)元素組成,元素與元素之間由逗號(hào)分隔。列表中的元素類(lèi)型不固定,既可以是基本數(shù)據(jù)類(lèi)型的數(shù)據(jù)也可以是組合數(shù)據(jù)類(lèi)型的數(shù)據(jù)。4.2 列表類(lèi)型如果一個(gè)列表中所有的元素又都是列表,則稱(chēng)該列表為二維列表,例如:列表[[1,3,5,7],[2,4,6,8],[7,8,9,10]]就是一個(gè)二維列表,該列表有3個(gè)元素組成,每一個(gè)元素又都是由4個(gè)元素的列表。列表是一種有序的可變數(shù)據(jù)類(lèi)型。例如列表[1,2,3]和列表[2,1,3],雖然都是由元素1,2,3組成,但它們的順序不一樣,表示為不同的列表。4.2.1 創(chuàng)建列表對(duì)象在Python語(yǔ)言中,創(chuàng)建列表是通過(guò)賦值語(yǔ)句將一個(gè)列表賦給一個(gè)變量來(lái)實(shí)現(xiàn)的。沒(méi)有元素,只有一個(gè)[]的列表為空列表。>>>list1=[1,2,3]#將列表[1,2,3]賦給變量list1>>>list1[1,2,3]>>>list2=[]#將空列表賦給變量list2>>>list2[]在Python語(yǔ)言中,也可以使用內(nèi)置函數(shù)list()將其他對(duì)象轉(zhuǎn)換列表數(shù)據(jù)。例如:>>>list4=list("Python")#將字符串”P(pán)ython”轉(zhuǎn)換成列表>>>list4['P','y','t','h','o','n']>>>list8=list({'a':123,'b':456,'c':2})#將字典{'a':123,'b':456,'c':2}各元素的鍵轉(zhuǎn)換成列表>>>list8['a','b','c']4.2.1 創(chuàng)建列表對(duì)象在Python語(yǔ)言中,也可以使用列表推導(dǎo)式來(lái)創(chuàng)建列表。列表推導(dǎo)式是Python構(gòu)建列表(list)的一種快捷方式,使用簡(jiǎn)潔的代碼就創(chuàng)建出一個(gè)列表。列表推導(dǎo)式的語(yǔ)法格式如下:[表達(dá)式for變量in可迭代對(duì)象]或者[表達(dá)式for變量in可迭代對(duì)象if條件]在Python語(yǔ)言中可迭代對(duì)象主要有列表、元組、集合、字典、字符串和range()對(duì)象等。4.2.1 創(chuàng)建列表對(duì)象例如:>>>list1=[2,5,8,3,16,22,35,17]>>>list2=[iforiinlist1ifi%5==0]#把列表list1中能被5整除的數(shù)生成一個(gè)列表>>>list2[5,35]又例如利用列表推導(dǎo)式生成1到11之間(不包括11)的所有整數(shù)的平方:>>>list3=[i**2foriinrange(1,11)]>>>list3[1,4,9,16,25,36,49,64,81,100]4.2.2 訪(fǎng)問(wèn)列表列表是一種有序的數(shù)據(jù)類(lèi)型,既可以整體訪(fǎng)問(wèn),也可以通過(guò)索引訪(fǎng)問(wèn)其中的元素。索引訪(fǎng)問(wèn)的語(yǔ)法格式如下: object[index]索引有兩種,一種為正向索引(從左到右):第一個(gè)元素的索引號(hào)為0,第二個(gè)元素的索引號(hào)為1,以此類(lèi)推;另一種為反向索引(從右到左):即倒數(shù)第一個(gè)元素的索引號(hào)為-1,倒數(shù)第二個(gè)元素的索引號(hào)為-2,以此類(lèi)推。4.2.2 訪(fǎng)問(wèn)列表以list1=[1,2,3,5,7,9]為例,索引號(hào)的取值如表4-1所示。4.2.2 訪(fǎng)問(wèn)列表>>>list1=[1,3,5,7,9,11]#創(chuàng)建了具有6個(gè)元素的列表>>>list1[2]#訪(fǎng)問(wèn)列表list1中索引號(hào)為2的元素5>>>list1[8]#試圖訪(fǎng)問(wèn)列表list1中索引號(hào)為8的元素,觸發(fā)異常Traceback(mostrecentcalllast):File"<pyshell#24>",line1,in<module>list1[8]IndexError:listindexoutofrange>>>list1[-6]#訪(fǎng)問(wèn)列表list1中索引號(hào)為-6的元素14.2.2 訪(fǎng)問(wèn)列表在Python語(yǔ)言中,也可以使用遍歷的方式訪(fǎng)問(wèn)列表中的每一個(gè)元素,例如:>>>list8=list(range(20,41,2))>>>foriinlist8: print(i,end=';')20;22;24;26;28;30;32;34;36;38;40;4.2.2 訪(fǎng)問(wèn)列表二維列表的訪(fǎng)問(wèn)與一維列表的訪(fǎng)問(wèn)類(lèi)似,也是通過(guò)列表名[索引號(hào)]的方式訪(fǎng)問(wèn),如果要訪(fǎng)問(wèn)二維列表中元素里面的元素,則要使用兩個(gè)下標(biāo)訪(fǎng)問(wèn),其語(yǔ)法格式為:object[index1][index2],其中index1為行下標(biāo),index2為列下標(biāo)。4.2.2 訪(fǎng)問(wèn)列表>>>lista=[[1,3,5,7],[2,4,6,8],[3,6,9,12]]#創(chuàng)建二維列表lista>>>lista[0]#通過(guò)一個(gè)下標(biāo)訪(fǎng)問(wèn)索引號(hào)為0的元素[1,3,5,7]>>>lista[0][2]#訪(fǎng)問(wèn)行下標(biāo)為0,列下標(biāo)為2的元素54.2.3 列表的切片操作在Python語(yǔ)言中,對(duì)于有序的數(shù)據(jù)類(lèi)型,都可以通過(guò)切片操作,抽取其中的部分值。列表切片表達(dá)式的基本語(yǔ)法格式如下: object[start_index:end_index:step]上述切片表達(dá)式的功能是切取object中從索引號(hào)start_index開(kāi)始到索引號(hào)end_index前一個(gè)元素止(即不包括索引號(hào)為end_index的元素),步長(zhǎng)為step的部分元素組成的列表。4.2.3 列表的切片操作>>>list1=[1,2,3,4,5,6,7,8]#創(chuàng)建值為[1,2,3,4,5,6,7,8]的列表list1>>>list1[2:6:2]#表示抽取索引號(hào)為2,4的元素組成的列表[3,5]4.2.3 列表的切片操作①輸出列表list1中的偶數(shù)元素;>>>list1=[1,3,5,7,9,2,4,6,8,10]>>>list1[5:][2,4,6,8,10]②輸出列表list1中索引號(hào)為偶數(shù)的元素;>>>list1[::2][1,5,9,4,8]③逆序輸出列表list1中所有元素;>>>list1[::-1][10,8,6,4,2,9,7,5,3,1]【例4-1】已知列表list1=[1,3,5,7,9,2,4,6,8,10],請(qǐng)寫(xiě)出能實(shí)現(xiàn)下列功能的切片表達(dá)式。4.2.3 列表的切片操作一般來(lái)說(shuō),如果切片表達(dá)式出現(xiàn)在賦值號(hào)的右邊,是指抽取切片表達(dá)式中指定的數(shù)據(jù)參與其他運(yùn)算,如果切片表達(dá)式出現(xiàn)在賦值號(hào)的左邊,則是指對(duì)列表進(jìn)行修改、刪除和插入等操作。4.2.3 列表的切片操作>>>list1=[1,2,3,4,5,6,7,8,9]#創(chuàng)建列表對(duì)象list1>>>list2=list1[::2]#把list1的切片賦給list2>>>list2[1,3,5,7,9]>>>list3=list1[2:5]#把list1的切片賦給list3>>>list3[3,4,5]4.2.3 列表的切片操作切片在賦值號(hào)左邊,且右邊列表中的元素個(gè)數(shù)與左邊切片中的元素個(gè)數(shù)相等,則修改。例如:>>>list1=[1,2,3,4,5,6,7,8,9]>>>list1[2:5]=[12,13,14]#替換list1中索引號(hào)為2,3,4的元素>>>list1[1,2,12,13,14,6,7,8,9]>>>list1[1::2]=[5,5,5,5]#替換list1中索引號(hào)為奇數(shù)的元素>>>list1[1,5,12,5,14,5,7,5,9]>>>list1[1]=15#用右邊的15修改替換列表list1中索引號(hào)為1的元素>>>list1[1,15,12,5,14,5,7,5,9]4.2.3 列表的切片操作切片在賦值號(hào)左邊,且右邊列表中的元素個(gè)數(shù)大于左邊切片中的元素個(gè)數(shù),則元素個(gè)數(shù)范圍相等的修改,多出的元素插入。例如:>>>list1=[1,3,5]#創(chuàng)建列表對(duì)象>>>list1[1:]=[2,3,4]#右邊列表中有3個(gè)元素,左邊切片有2個(gè)元素,前兩個(gè)修改,多出的插入>>>list1[1,2,3,4]>>>list1[:0]=[2,4]#右邊列表2個(gè)元素,左邊切片為0個(gè)元素,則表示在list1的最前面插入元素2,4>>>list1[2,4,1,2,3,4]4.2.3 列表的切片操作切片在賦值號(hào)左邊,且右邊列表中的元素個(gè)數(shù)小于左邊切片中的元素個(gè)數(shù),則修改且刪除。例如:>>>list1=[2,4,6,8,10]#創(chuàng)建列表對(duì)象>>>list1[:3]=[1,2]#用右邊列表中的兩個(gè)元素替換左邊切片中的三個(gè)元素,即刪除了一個(gè)元素>>>list1[1,2,8,10]>>>list1[:3]=[]#刪除前三個(gè)元素>>>list1[10]4.2.4 列表的操作列表是一種可變的數(shù)據(jù)類(lèi)型,對(duì)列表的操作主要體現(xiàn)在修改、添加、刪除等操作上。4.2.4 列表的操作1.用于列表對(duì)象的運(yùn)算符表4?2列表對(duì)象的運(yùn)算符及功能運(yùn)算符功能實(shí)例實(shí)例的結(jié)果+首尾拼接兩個(gè)列表對(duì)象[1,3,5]+[2,4,6,8][1,3,5,2,4,6,8]*對(duì)列表重復(fù)n次[1,3,5]*3[1,3,5,1,3,5,1,3,5]in判斷元素是否在列表中3in[1,3,5]Truenotin判斷元素是否不在列表中3notin[1,3,5]False4.2.4 列表的操作2. 列表操作函數(shù)表4?3列表操作函數(shù)函數(shù)名功能實(shí)例實(shí)例的結(jié)果len(List)求列表List的長(zhǎng)度,即元素的個(gè)數(shù)len([1,3,5])3max(List)求列表List中最大的元素max([11,13,5,7,8]13min(List)求列表List中最小的元素min([11,13,5,7,8]5sum(List)求列表List中元素的和sum([1,3,5,6])15list(seq)把其他序列類(lèi)型的數(shù)據(jù)轉(zhuǎn)換成列表list(“Python”)['P','y','t','h','o','n']4.2.4 列表的操作3. 列表的操作方法表4?4列表的常用操作方法方法功能List.append(obj)在列表List末尾添加新的對(duì)象List.count(obj)統(tǒng)計(jì)某個(gè)元素在列表List中出現(xiàn)的次數(shù)List.extend(seq)在列表List末尾一次性追加另一個(gè)序列中的多個(gè)值(用新序列seq擴(kuò)展原來(lái)的列表List)List.index(obj)從列表List中找出與obj的第一個(gè)匹配項(xiàng)的索引位置List.insert(index,obj)將對(duì)象obj插入到列表List4.2.4 列表的操作表4?4列表的常用操作方法(續(xù))方法功能List.pop([index=-1])移除列表List中的一個(gè)元素(默認(rèn)最后一個(gè)元素),并且返回該元素的值List.remove(obj)移除列表List中與obj的第一個(gè)匹配項(xiàng)List.reverse()反向列表List中元素List.sort(key=None,reverse=False)對(duì)原列表List進(jìn)行排序List.clear()清空列表ListList.copy()復(fù)制列表List4.2.4 列表的操作>>>list1=[1,2,1,1,2,4,5,3,2]#創(chuàng)建列表對(duì)象list1>>>list1.count(2)#統(tǒng)計(jì)列表list1中元素2出現(xiàn)的次數(shù)3>>>list1.index(2)#檢索元素2第一次在列表list1中出現(xiàn)的位置(索引號(hào))1>>>list1.sort(reverse=True)#對(duì)列表list1中的元素進(jìn)行降序排列4.2.4 列表的操作在Python語(yǔ)言中,clear()方法是把列表中的元素都清除了,但列表還在。如果要?jiǎng)h除列表,可以使用del語(yǔ)句。例如:>>>list1=[1,2,3,4,5,6,7,8,9]#創(chuàng)建列表對(duì)象list1>>>dellist1[5]#刪除列表list1中索引號(hào)為5的元素>>>list1[1,2,3,4,5,7,8,9]>>>dellist1#刪除列表list1>>>dellist1#刪除列表list14.2.4 列表的操作【例4-2】已知一個(gè)班級(jí)有n名同學(xué)(具體人數(shù)由鍵盤(pán)輸入),期中考試考了《Python程序設(shè)計(jì)基礎(chǔ)》。要求編寫(xiě)程序,逐個(gè)輸入這n名同學(xué)的成績(jī)(整數(shù)),計(jì)算并輸出該門(mén)課程的平均分(浮點(diǎn)數(shù),保留2位小數(shù))和高于平均分的人數(shù),最后把該門(mén)課程的分?jǐn)?shù)從低到高的輸出。分析:要存儲(chǔ)n名同學(xué)的考試分?jǐn)?shù),可以使用列表。首先置一空列表,使用循環(huán)輸入n個(gè)學(xué)生的成績(jī),每輸入一個(gè)成績(jī),就把該成績(jī)添加到列表中去。循環(huán)結(jié)束,n個(gè)同學(xué)的成績(jī)就保存到列表中了。然后使用內(nèi)置函數(shù)sum對(duì)列表進(jìn)行求和,再求平均分。再用遍歷的方法把每個(gè)同學(xué)的成績(jī)與平均分比較,統(tǒng)計(jì)出高于平均分的人數(shù)。最后使用sort()方法排序,輸出。4.2.4 列表的操作#liti4-2.pyn=int(input("請(qǐng)輸入班級(jí)學(xué)生人數(shù):"))score=[]foriinrange(n):cj=int(input("請(qǐng)輸入第"+str(i+1)+"個(gè)學(xué)生的成績(jī):"))score.append(cj)aver=sum(score)/nprint("平均分={0:.2f}".format(aver))4.2.4 列表的操作count=0foriinrange(n):ifscore[i]>aver:count=count+1print("高于平均分的人數(shù)={0}".format(count))print("學(xué)生分?jǐn)?shù)從低到高如下:")score.sort()print(score)4.3 元組類(lèi)型在Python語(yǔ)言中,元組(tuple)與列表類(lèi)似,也是Python語(yǔ)言中提供的一種內(nèi)置序列類(lèi)型。元組是由小括號(hào)括起來(lái)的零個(gè)或多個(gè)元素組成,元素與元素之間由逗號(hào)分隔。元組中的元素類(lèi)型不固定,既可以是基本數(shù)據(jù)類(lèi)型的數(shù)據(jù)也可以是組合數(shù)據(jù)類(lèi)型的數(shù)據(jù)。4.3 元組類(lèi)型元組與列表不同的是元組是一種有序的不可變數(shù)據(jù)類(lèi)型。而列表是有序的可變數(shù)據(jù)類(lèi)型,即元組中的元素是不能修改、刪除、插入和追加的,只能通過(guò)索引和切片訪(fǎng)問(wèn)。4.3.1 元組的創(chuàng)建在Python語(yǔ)言中,創(chuàng)建元組也是通過(guò)賦值語(yǔ)句將一個(gè)元組賦給一個(gè)變量來(lái)實(shí)現(xiàn)的。沒(méi)有元素,只有一個(gè)()的為空元組,只有一個(gè)元素的元組,必須要在元素后面加上逗號(hào)。4.3.1 元組的創(chuàng)建>>>tup2=(1,3,5,6,1)#將元組(1,3,,5,6,1)賦給tup2>>>tup2(1,3,5,6,1)>>>tup4=(5,)#將只有一個(gè)元素的元組賦給tup4,逗號(hào)不能省>>>tup4(5,)>>>tup5=()#將空元組賦給tup5>>>tup5()4.3.1 元組的創(chuàng)建在Python語(yǔ)言中,也可以使用內(nèi)置函數(shù)tuple()將其他對(duì)象轉(zhuǎn)換成元組,例如:>>>tup7=tuple("Python")#將字符串轉(zhuǎn)換成元組并賦給tup7>>>tup7('P','y','t','h','o','n')4.3.1 元組的創(chuàng)建與列表推導(dǎo)式不同,元組中的推導(dǎo)式叫生成器推導(dǎo)式,其語(yǔ)法格式如下:(表達(dá)式for變量in可迭代對(duì)象)或者(表達(dá)式for變量in可迭代對(duì)象if條件)4.3.1 元組的創(chuàng)建>>>tup9=(i**2foriinrange(5))>>>tup9<generatorobject<genexpr>at0x0000000002EB9408>4.3.1 元組的創(chuàng)建生成器推導(dǎo)式的結(jié)果是一個(gè)生成器對(duì)象,而不是元組,這與列表推導(dǎo)式有很大不同,列表推導(dǎo)式的結(jié)果是列表。使用生成器對(duì)象的元素時(shí),可以將生成器對(duì)象轉(zhuǎn)換成列表或元組。例如:>>>tup9=(i**2foriinrange(5))#創(chuàng)建生成器推導(dǎo)式,把其結(jié)果賦給tup9>>>tup10=tuple(tup9)#將生成器對(duì)象tup9轉(zhuǎn)換成元組,賦給tup10>>>tup10(0,1,4,9,16)4.3.1 元組的創(chuàng)建生成器對(duì)象只能使用一次,使用完后就被釋放,如需再次使用,則要重新產(chǎn)成生成器對(duì)象。>>>tup9=(i**2foriinrange(5))>>>foriintup9:print(i,end=';')
0;1;4;9;16;4.3.2 元組的訪(fǎng)問(wèn)和切片與列表一樣,元組也是通過(guò)下標(biāo)索引號(hào)來(lái)訪(fǎng)問(wèn)單個(gè)元組元素,通過(guò)切片訪(fǎng)問(wèn)一組元素。>>>tup1=(1,3,2,4,3,6)>>>tup1[3]4>>>tup1[2:4](2,4)4.3.2 元組的訪(fǎng)問(wèn)和切片元組是不可變的組合數(shù)據(jù)類(lèi)型,不能通過(guò)賦值語(yǔ)句修改元組中的元素值,否則將觸發(fā)異常,例如:>>>tup1[1]=8#試圖通過(guò)修改元組中索引號(hào)為1的元素的值,觸發(fā)異常Traceback(mostrecentcalllast):File"<pyshell#21>",line1,in<module>tup1[1]=8TypeError:'tuple'objectdoesnotsupportitemassignment4.3.3 元組類(lèi)型的操作1. 用于元組對(duì)象的運(yùn)算符表4?5元組對(duì)象的運(yùn)算符及功能運(yùn)算符功能實(shí)例實(shí)例的結(jié)果+首尾拼接兩個(gè)元組對(duì)象(1,2)+(5,6)(1,2,5,6)*對(duì)元組重復(fù)n次(1,4,8)*3(1,4,8,1,4,8,1,4,8)in判斷元素是否在元組中3in(1,3,5)Truenotin判斷元素是否不在元組中3notin(1,3,5)False4.3.3 元組類(lèi)型的操作2. 元組操作函數(shù)表4?6元組操作函數(shù)函數(shù)名功能實(shí)例實(shí)例的結(jié)果len(Tuple)求元組Tuple的長(zhǎng)度,即元素的個(gè)數(shù)len((1,3,5))3max(Tuple)求元組Tuple中最大的元素max((11,13,5,7,8))13min(Tuple)求元組Tuple中最小的元素min((11,13,5,7,8))5sum(Tuple)求元組Tuple中元素的和sum((1,3,5,6))15tuple(seq)把其他序列類(lèi)型的數(shù)據(jù)轉(zhuǎn)換成元組tuple(“Python”)('P','y','t','h','o','n')4.3.3 元組類(lèi)型的操作3. 元組的操作方法表4?7元組的常用操作方法序號(hào)方法功能1Tuple.count(obj)統(tǒng)計(jì)某個(gè)元素在元組Tuple中出現(xiàn)的次數(shù)2Tuple.index(obj)從元組Tuple中找出與obj的第一個(gè)匹配項(xiàng)的索引位置4.3.3 元組類(lèi)型的操作【例4-3】已知元組(31,45,21,37,98,65,43,48,69,90,77,35),編寫(xiě)程序,對(duì)該元組中的數(shù)據(jù)進(jìn)行降序排列,并仍以元組的形式輸出。4.3.3 元組類(lèi)型的操作#liti4-3.pytup1=(31,45,21,37,98,65,43,48,69,90,77,35)list1=list(tup1)list1.sort(reverse=True)tup2=tuple(list1)print(tup2)程序運(yùn)行后的結(jié)果為:(98,90,77,69,65,48,45,43,37,35,31,21)4.4 集合類(lèi)型集合(set)是一種無(wú)序的可變的組合數(shù)據(jù)類(lèi)型,在Python語(yǔ)言中,集合由大括號(hào)把元素括起來(lái),且集合中的元素是唯一的。集合中的元素必須是不可變的數(shù)據(jù)類(lèi)型,即可變的數(shù)據(jù)類(lèi)型如列表、集合和字典等類(lèi)型的數(shù)據(jù)不能作為集合中的元素。集合是一種無(wú)序的數(shù)據(jù)類(lèi)型,所以集合不可以通過(guò)索引訪(fǎng)問(wèn)其中的元素,也不可以進(jìn)行切片操作。4.4.1 集合類(lèi)型的創(chuàng)建在Python語(yǔ)言中,集合對(duì)象的創(chuàng)建是使用賦值語(yǔ)句進(jìn)行的,如果要?jiǎng)?chuàng)建一個(gè)空集合,必須使用set()函數(shù)。>>>set1={1,2,3}#將集合{1,2,3}賦給set1>>>set1{1,2,3}>>>set3=set()#空集合表示為set(),把空集合賦給set3>>>set3set()>>>set4={1,3,(4,5)}#把集合{1,3,(4,5)}賦給set4>>>set4{(4,5),1,3}>>>set5={2,4,[7,8]}#列表是可變數(shù)據(jù)類(lèi)型,不能作為集合的元素,觸發(fā)異常4.4.1 集合類(lèi)型的創(chuàng)建可以使用set()函數(shù),把其他類(lèi)型轉(zhuǎn)換成集合,例如:>>>set7=set([1,2,3,4,2,1])#用轉(zhuǎn)換函數(shù)set(),把列表轉(zhuǎn)換成集合>>>set7#集合中不存在重復(fù)的元素{1,2,3,4}4.4.1 集合類(lèi)型的創(chuàng)建在Python語(yǔ)言中,也可以使用集合推導(dǎo)式來(lái)創(chuàng)建集合。集合推導(dǎo)式的語(yǔ)法格式如下:{表達(dá)式for變量in可迭代對(duì)象}或者{表達(dá)式for變量in可迭代對(duì)象if條件}例如:>>>set8={iforiinrange(1,20,3)}>>>set8{1,4,7,10,13,16,19}4.4.2 集合的訪(fǎng)問(wèn)集合是一種無(wú)序的組合數(shù)據(jù)類(lèi)型,所以集合不能通過(guò)索引和切片訪(fǎng)問(wèn)其中的元素,但可以通過(guò)遍歷來(lái)訪(fǎng)問(wèn)集合中的每一個(gè)元素。例如:>>>set1={3,5,1,8}>>>foriinset1: print(i,end=';')
8;1;3;5;4.4.3 集合類(lèi)型的操作1. 集合的運(yùn)算表4?8集合對(duì)象的運(yùn)算符及功能運(yùn)算符功能實(shí)例實(shí)例的結(jié)果in判斷元素是否在集合中3in{1,3,5}Truenotin判斷元素是否不在集合中3notin{2,4,6}True==判斷兩個(gè)集合是否相等{1,3,5}=={5,1,3}True!=判斷兩個(gè)集合是否不相等{1,3,5}!={3,1,5}Falseset1<set2判斷set1是否是set2的真子集{1,3}<{1,3,5}{1,3,5}<{1,3,5}TrueFalse4.4.3 集合類(lèi)型的操作表4?8集合對(duì)象的運(yùn)算符及功能運(yùn)算符功能實(shí)例實(shí)例的結(jié)果set1<=set2判斷set1是否是set2的子集{1,3}<={1,3,5}{1,3,5}<={1,3,5}TrueTrueset1>set2判斷set1是否完全包含set2{1,3,7}>{1,3}{1,3,5}>{1,3,5}TrueFalseset1>=set2判斷set1是否包含set2{1,3,7}>={1,3}{1,3,5}>={1,5,3}TrueTrueset1&set2求set1和set2的交集{1,3,7}&{1,3,9}{1,3}set1|set2求set1和set2的并集{1,3,7}|{1,3,9}{1,3,7,9}set1-set2求屬于set1,但不屬于set2的元素{1,3,7}-{1,3,9}{7}set1^set2求set1和set2的對(duì)稱(chēng)差{1,3,7}^{1,3,9}{9,7}4.4.3 集合類(lèi)型的操作集合的操作函數(shù)表4?9集合操作函數(shù)函數(shù)名功能實(shí)例實(shí)例的結(jié)果len(Set)求集合Set的長(zhǎng)度,即元素的個(gè)數(shù)len({1,3,5})3max(Set)求集合Set中最大的元素max({11,13,5,7,8})13min(Set)求集合Set中最小的元素min({11,13,5,7,8})5sum(Set)求集合Set中元素的和sum({1,3,5,6})15set(seq)把其他序列類(lèi)型的數(shù)據(jù)轉(zhuǎn)換成集合set(“Python”){'h','o','P','n','t','y'}4.4.3 集合類(lèi)型的操作3.集合的操作方法表4?10集合的常用操作方法序號(hào)方法功能1Set.add(x)給集合Set添加一個(gè)元素x2Set.update(x)給集合Set添加一個(gè)x,x為可迭代對(duì)象3Set.remove(x)在集合Set中移除元素x,若x不存在,觸發(fā)異常4Set.discard(x)在集合Set中刪除指定的元素,若x不存在,不報(bào)錯(cuò)5Set.pop()隨機(jī)移除Set中的一個(gè)元素6Set.clear()移除集合Set中的所有元素7Set.copy()拷貝集合Set4.4.3 集合類(lèi)型的操作下面給一些操作實(shí)例:>>>set1={1,3,5,7}#創(chuàng)建集合set1>>>set1.add(9)#給集合添加元素9>>>set1{1,3,5,7,9}>>>set1.update({2,4})#給集合添加集合{2,4}中的元素>>>set1{1,2,3,4,5,7,9}4.5 字典類(lèi)型與集合類(lèi)似,字典(dictionary)也是無(wú)序可變的組合數(shù)據(jù)類(lèi)型。但與集合不同的是,字典是一種映射型的組合數(shù)據(jù)類(lèi)型,字典中的每個(gè)元素由鍵值對(duì)組成。在字典中,每個(gè)元素的鍵的取值是唯一的,且必須是不可變的數(shù)據(jù)類(lèi)型,即列表、集合和字典等可變類(lèi)型的數(shù)據(jù)不能作為鍵的取值;每個(gè)元素值的取值則可以是任何數(shù)據(jù)類(lèi)型的數(shù)據(jù),沒(méi)有任何限制。4.5.1 字典的創(chuàng)建創(chuàng)建字典可以通過(guò)賦值語(yǔ)句進(jìn)行,例如:>>>dict1={'Id':210101,'Name':'趙小明','Score':[85,79,80,67,79,92],'Sex':'M','Age':19}>>>dict1{'Id':210101,'Name':'趙小明','Score':[85,79,80,67,79,92],'Sex':'M','Age':19}>>>dict2={}>>>dict2{}4.5.1 字典的創(chuàng)建可以使用dict()函數(shù),把鍵值對(duì)形式的列表或元組轉(zhuǎn)換成字典,也可以在dict()函數(shù)中使用關(guān)鍵字參數(shù)(參照第5章函數(shù))的形式創(chuàng)建字典。例如:>>>dict4=dict([['Id',210102],['Name','孫中文'],['Age',20]])#把列表轉(zhuǎn)換成字典>>>dict4{'Id':210102,'Name':'孫中文','Age':20}4.5.1 字典的創(chuàng)建也可以使用字典的fromkeys()方法對(duì)字典進(jìn)行初始化。formkeys()方法的語(yǔ)法格式如下:dictName.fromkeys(seq[,value])>>>dict8={}.fromkeys(['sno','name','major'])>>>dict8{'sno':None,'name':None,'major':None}>>>dict9={}.fromkeys(('sno','name','major'),'Unknown')>>>dict9{'sno':'Unknown','name':'Unknown','major':'Unknown'}4.5.1 字典的創(chuàng)建在Python語(yǔ)言中,還可以使用字典推導(dǎo)式來(lái)創(chuàng)建字典,其語(yǔ)法格式如下:{鍵:值for變量in可迭代對(duì)象}或者{鍵:值for變量in可迭代對(duì)象if條件}>>>dict10={i:i**2foriinrange(5)}>>>dict10{0:0,1:1,2:4,3:9,4:16}4.5.2 字典的訪(fǎng)問(wèn)字典的鍵值對(duì)是一種映射關(guān)系,可以根據(jù)“鍵”來(lái)訪(fǎng)問(wèn)“值”。所以訪(fǎng)問(wèn)字典中鍵值對(duì)的值可以通過(guò)方括號(hào)并指定鍵的方式進(jìn)行訪(fǎng)問(wèn)。如果“鍵”不存在,則觸發(fā)異常。>>>dict1={'Id':210101,'Name':'趙小明','Score':[85,79,80,67,79,92],'Sex':'M','Age':19}>>>dict1['Name']#通過(guò)鍵’Name’,訪(fǎng)問(wèn)其對(duì)應(yīng)的值'趙小明'4.5.2 字典的訪(fǎng)問(wèn)字典對(duì)象提供了一個(gè)get()方法,該方法通過(guò)鍵訪(fǎng)問(wèn)其對(duì)應(yīng)的值。其調(diào)用格式為:dictName.get(keyName[,value])其功能為當(dāng)字典dictName中鍵keyName存在時(shí),返回該鍵對(duì)應(yīng)的值,而鍵不存在也不會(huì)出錯(cuò),而返回指定值value,value的默認(rèn)值為None。4.5.2 字典的訪(fǎng)問(wèn)>>>dict5=dict((('Id',210102),('Name','孫中文'),('Age',20)))>>>dict5{'Id':210102,'Name':'孫中文','Age':20}>>>dict5.get('Id')210102>>>dict5.get('Class','該鍵不存在')'該鍵不存在'4.5.2 字典的訪(fǎng)問(wèn)與列表、元組、集合類(lèi)似,可以通過(guò)遍歷來(lái)訪(fǎng)問(wèn),但是字典默認(rèn)遍歷的是鍵,而不是元素,當(dāng)然也可以使用字典對(duì)象的keys()方法來(lái)指明遍歷字典的鍵。如果需要遍歷字典的元素必須使用字典對(duì)象的items()方法,如果需要遍歷字典的“值”,則必須使用字典對(duì)象的values()方法。4.5.2 字典的訪(fǎng)問(wèn)>>>dict1={'Id':210101,'Name':'趙小明','Score':[85,79,80,67,79,92],'Sex':'M','Age':19}>>>fordindict1:#默認(rèn)情況下,遍歷字典的鍵 print(d,end=';')Id;Name;Score;Sex;Age;>>>fordindict1.keys():#指明遍歷字典的鍵 print(d,end=';')Id;Name;Score;Sex;Age;4.5.2 字典的訪(fǎng)問(wèn)>>>fordindict1.items():#遍歷字典的元素 print(d)('Id',210101)('Name','趙小明')('Score',[85,79,80,67,79,92])('Sex','M')('Age',19)>>>fordindict1.values():#遍歷字典的元素中的值 print(d)210101趙小明[85,79,80,67,79,92]M194.5.3 字典類(lèi)型的操作1. 字典的運(yùn)算符及操作函數(shù)運(yùn)算符/函數(shù)功能含義in包含,判斷某個(gè)鍵值對(duì)或鍵或值是否在字典中notin不包含,判斷某個(gè)鍵值對(duì)或鍵或值是否不在字典中dict1[k]=v修改,添加。若k是字典dict1中的鍵,則用v替換鍵k所對(duì)應(yīng)的值,否則在字典中添加由k:v組成的鍵值對(duì)元素len(dict1)求字典dict1中元素的個(gè)數(shù)max(dict1)求字典dict1中鍵的最大值,要求所有鍵的數(shù)據(jù)類(lèi)型相同min(dict1)求字典dict1中鍵的最小值,要求所有鍵的數(shù)據(jù)類(lèi)型相同sum(dict1)求字典dict1中所有鍵的和,要求所有鍵的數(shù)據(jù)類(lèi)型為數(shù)字類(lèi)型dict(list|tuple)把具有鍵值對(duì)形式的列表或元組轉(zhuǎn)換成字典4.5.3 字典類(lèi)型的操作>>>dict1={1:'C++',2:'Python',3:'Java'}#創(chuàng)建字典對(duì)象dict1>>>(1,'C++')indict1.items()#判斷(1,'C++')是否是dict1中的鍵值對(duì)True>>>dict1[4]='VisulBasic'#4不是dict1中的鍵,則在字典中添加4:'VisulBasic'元素>>>dict1[1]='C'#1是dict1中的鍵,用’C’替換原來(lái)的值>>>dict1{1:'C',2:'Python',3:'Java',4:'VisulBasic'}>>>sum(dict1)#求字典dict1中所有鍵的和104.5.3 字典類(lèi)型的操作2. 字典的操作方法方法功能描述Dict.clear()清空字典Dict內(nèi)所有元素Dict.copy()拷貝字典DictDict.fromkeys(seq,val)創(chuàng)建一個(gè)新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對(duì)應(yīng)的初始值Di
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京課改版歷史八年級(jí)下冊(cè)第2課《新中國(guó)的初步鞏固》聽(tīng)課評(píng)課記錄
- 人民版道德與法治九年級(jí)上冊(cè)4.2《城鄉(xiāng)差距》聽(tīng)課評(píng)課記錄
- 招投文件合同范本(2篇)
- 生物燃料鍋爐購(gòu)買(mǎi)合同(2篇)
- 人教版數(shù)學(xué)七年級(jí)下冊(cè)《7-2-2用坐標(biāo)表示平移》聽(tīng)評(píng)課記錄
- 魯人版道德與法治九年級(jí)上冊(cè)9.1《公正律師法律援助》配套聽(tīng)課評(píng)課記錄
- 湘師大版道德與法治七年級(jí)上冊(cè)2.3《快樂(lè)學(xué)習(xí)》聽(tīng)課評(píng)課記錄
- 道德與法治部編版七年級(jí)上冊(cè)同步聽(tīng)課評(píng)課記錄《第8課 生命可以永恒嗎》
- 【部編版】八年級(jí)歷史上冊(cè)《鴉片戰(zhàn)爭(zhēng)》公開(kāi)課 聽(tīng)課評(píng)課記錄及教學(xué)反思
- 蘇科版數(shù)學(xué)八年級(jí)上冊(cè)《課題學(xué)習(xí) 關(guān)于勾股定理的研究》聽(tīng)評(píng)課記錄
- 藏族唐卡藝術(shù)特色分析
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告
- 護(hù)士團(tuán)隊(duì)的協(xié)作和領(lǐng)導(dǎo)力培養(yǎng)培訓(xùn)課件
- QFD模板含計(jì)算公式計(jì)分標(biāo)準(zhǔn)說(shuō)明模板
- 醫(yī)院護(hù)理培訓(xùn)課件:《早產(chǎn)兒姿勢(shì)管理與擺位》
- 人工智能在生物醫(yī)學(xué)倫理與法律中的基因編輯與生命倫理問(wèn)題研究
- 《論文的寫(xiě)作技巧》課件
- 國(guó)有資產(chǎn)管理辦法-國(guó)有資產(chǎn)管理辦法條例
- 公務(wù)車(chē)輛定點(diǎn)維修車(chē)輛保養(yǎng)(附彩圖) 投標(biāo)方案
- 00015-英語(yǔ)二自學(xué)教程-unit3
- 第二章共混改性基本原理
評(píng)論
0/150
提交評(píng)論