Python程序設(shè)計基礎(chǔ)項目化教程 課件 項目六 組合數(shù)據(jù)類型_第1頁
Python程序設(shè)計基礎(chǔ)項目化教程 課件 項目六 組合數(shù)據(jù)類型_第2頁
Python程序設(shè)計基礎(chǔ)項目化教程 課件 項目六 組合數(shù)據(jù)類型_第3頁
Python程序設(shè)計基礎(chǔ)項目化教程 課件 項目六 組合數(shù)據(jù)類型_第4頁
Python程序設(shè)計基礎(chǔ)項目化教程 課件 項目六 組合數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《Python語言程序設(shè)計》項目六組合數(shù)據(jù)類型Contents列表List的用法元組Tuple的用法掌握集合Set的用法字典Dictionary的用法可變類型與不可變類型PART01Python中的類型分為兩種:可變類型和不可變類型??勺冾愋?,即可以對該類型對象中保存的元素值做修改,如列表、字典都是可變類型。不可變類型,即該類型對象所保存的元素值不允許修改,只能通過給對象整體賦值來修改對象所保存的數(shù)據(jù)。但此時實際上就是創(chuàng)建了一個新的不可變類型的對象、而不是修改原對象的值,如數(shù)字、字符串、元組都是不可變類型。可變類型與不可變類型可變類型與不可變類型【任務(wù)描述】了解可變類型與不可變類型【關(guān)鍵步驟】了解可變類型與不可變類型示例011 n1,n2=1,1#定義兩個整型變量n1和n2,都賦值為12 print('第2行n1和n2的內(nèi)存地址分別為:',id(n1),id(n2))3 n2=3#將n2重新賦值為34 print('第4行n1和n2的內(nèi)存地址分別為:',id(n1),id(n2))5 n1=3#將n1重新賦值為36 print('第6行n1和n2的內(nèi)存地址分別為:',id(n1),id(n2))7 s1,s2='Python','Python'#定義兩個字符串變量s1和s2,都賦值為'Python'8 print('第8行s1和s2的內(nèi)存地址分別為:',id(s1),id(s2))9 s2='C++'#將s2重新賦值為'C++'10 print('第10行s1和s2的內(nèi)存地址分別為:',id(s1),id(s2))11 s1='C++'#將s1重新賦值為'C++'12 print('第12行s1和s2的內(nèi)存地址分別為:',id(s1),id(s2))13 t1,t2=(1,2,3),(1,2,3)#定義兩個元組變量t1和t2,都賦值為(1,2,3)14 print('第14行t1和t2的內(nèi)存地址分別為:',id(t1),id(t2))15 t2=(1,2,3)#t2被重新賦值為(1,2,3)16 print('第16行t1和t2的內(nèi)存地址分別為:',id(t1),id(t2))17 ls1,ls2=[1,2,3],[1,2,3]#定義兩個列表變量ls1和ls2,都賦值為[1,2,3]18 print('第18行l(wèi)s1和ls2的內(nèi)存地址分別為:',id(ls1),id(ls2))19 ls2[1]=5#將列表ls2中下標(biāo)為1的元素值重新賦值為520 print('第20行l(wèi)s1和ls2的內(nèi)存地址分別為:',id(ls1),id(ls2))21 ls2=[1,2,3]#ls2被重新賦值為[1,2,3]22 print('第22行l(wèi)s1和ls2的內(nèi)存地址分別為:',id(ls1),id(ls2))可變類型與不可變類型示例01第2行n1和n2的內(nèi)存地址分別為:140724681233440140724681233440第4行n1和n2的內(nèi)存地址分別為:140724681233440140724681233504第6行n1和n2的內(nèi)存地址分別為:140724681233504140724681233504第8行s1和s2的內(nèi)存地址分別為:24844011623122484401162312第10行s1和s2的內(nèi)存地址分別為:24844011623122484402647480第12行s1和s2的內(nèi)存地址分別為:24844026474802484402647480第14行t1和t2的內(nèi)存地址分別為:24844019551762484401955392第16行t1和t2的內(nèi)存地址分別為:24844019551762484401955464第18行l(wèi)s1和ls2的內(nèi)存地址分別為:24844007102162484400710280第20行l(wèi)s1和ls2的內(nèi)存地址分別為:24844007102162484400710280第22行l(wèi)s1和ls2的內(nèi)存地址分別為:24844007102162484401200264程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:可變類型與不可變類型示例01列表ListPART02列表就是用一對中括號括起來的多個元素的有序集合,各元素之間用逗號分隔。如果一個列表中不包含任何元素(即只有一對中括號),則該列表就是一個空列表。創(chuàng)建列表列表List【任務(wù)描述】了解列表的常用操作【關(guān)鍵步驟】了解列表的常用操作示例02ls1=[1,'one','一']#創(chuàng)建列表對象并將其賦給變量ls1,其包含3個元素ls2=[]#創(chuàng)建列表對象并將其賦給變量ls2,其不包含任何元素、因此是一個空列表print('ls1的值為:',ls1)print('ls2的值為:',ls2)創(chuàng)建列表示例:ls1的值為:[1,'one','一']ls2的值為:[]程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:列表List示例02ls=list((1,'one','一'))#使用list方法根據(jù)元組創(chuàng)建列表對象,并賦給ls變量print('ls的值為:',ls)print('ls的第一個元素和最后一個元素的值分別為:',ls[0],ls[-1])print('ls的前兩個元素的值為:',ls[0:-1])除了使用一對中括號創(chuàng)建列表對象的這種方式外,還可以利用Python的內(nèi)置方法list根據(jù)一個元組創(chuàng)建一個列表對象。ls的值為:[1,'one','一']ls的第一個元素和最后一個元素的值分別為:1一ls的前兩個元素的值為:[1,'one']程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:列表List示例02ls1=[1,2,3]#創(chuàng)建列表對象并賦給變量ls1ls2=['Python','C++']#創(chuàng)建列表對象并賦給變量ls2ls3=ls1+ls2#通過拼接運(yùn)算“+”將ls1和ls2連接生成一個新的列表對象并賦給ls3print('ls1和ls2的值分別為:',ls1,ls2)print('ls3的值為:',ls3)通過拼接運(yùn)算可以將多個列表連接在一起,生成一個新的列表。ls1和ls2的值分別為:[1,2,3]['Python','C++']ls3的值為:[1,2,3,'Python','C++']程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:列表List示例02Python中,通過賦值運(yùn)算實際上是將兩個變量指向同一個對象,而不是將一個變量的值賦給另一個變量。兩個變量指向同一個對象后,我們通過一個變量修改對象中元素的值,那么通過另一個變量訪問對象時,訪問到的對象中的元素值也是修改后的值。列表List示例02ls1=[1,2,3]#創(chuàng)建列表對象并賦給變量ls1ls2=ls1#通過賦值運(yùn)算ls2和ls1指向同一個對象print('ls1和ls2的值分別為:',ls1,ls2)print('ls1和ls2的內(nèi)存地址分別為:',id(ls1),id(ls2))ls1[1]=5#將ls1中下標(biāo)為1的元素值修改為5print('ls1和ls2的值分別為:',ls1,ls2)復(fù)制列表元素示例:ls1和ls2的值分別為:[1,2,3][1,2,3]ls1和ls2的內(nèi)存地址分別為:19772185237201977218523720ls1和ls2的值分別為:[1,5,3][1,5,3]程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:列表List示例02ls1=[1,2,3]#創(chuàng)建列表對象并賦給變量ls1ls2=ls1[:]#通過ls1[:]將ls1的所有元素截取生成新對象并賦給ls2print('ls1和ls2的值分別為:',ls1,ls2)print('ls1和ls2的內(nèi)存地址分別為:',id(ls1),id(ls2))ls1[1]=5#將ls1中下標(biāo)為1的元素值修改為5print('ls1和ls2的值分別為:',ls1,ls2)采用元素截取的方法,根據(jù)一個已有列表對象復(fù)制出另一個新的列表對象,后面對兩個對象的操作完全獨(dú)立ls1和ls2的值分別為:[1,2,3][1,2,3]ls1和ls2的內(nèi)存地址分別為:20214630569682021463057032ls1和ls2的值分別為:[1,5,3][1,2,3]程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:列表List示例02ls1=[1,[2,3]]#創(chuàng)建列表對象并賦給變量ls1ls2=ls1[:]#通過ls1[:]將ls1的所有元素截取生成新對象并賦給ls2print('ls1和ls2的值分別為:',ls1,ls2)print('ls1和ls2的內(nèi)存地址分別為:',id(ls1),id(ls2))print('ls1[1]和ls2[1]的內(nèi)存地址分別為:',id(ls1[1]),id(ls2[1]))ls1[1][0]=5#將ls1下標(biāo)為1的列表元素(即ls[1])中下標(biāo)為0的元素值修改為5print('ls1和ls2的值分別為:',ls1,ls2)如果一個列表中包含列表類型的元素,會出現(xiàn)兩個列表中的部分元素指向同一個對象的問題。列表List示例02ls1和ls2的值分別為:[1,[2,3]][1,[2,3]]ls1和ls2的內(nèi)存地址分別為:14167539964241416754486344ls1[1]和ls2[1]的內(nèi)存地址分別為:14167539963601416753996360ls1和ls2的值分別為:[1,[5,3]][1,[5,3]]程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:示例02importcopy#導(dǎo)入copy模塊ls1=[1,[2,3]]#創(chuàng)建列表對象并賦給變量ls1ls2=copy.deepcopy(ls1)#通過調(diào)用deepcopy函數(shù)復(fù)制ls1生成新對象并賦給ls2print('ls1和ls2的值分別為:',ls1,ls2)print('ls1和ls2的內(nèi)存地址分別為:',id(ls1),id(ls2))print('ls1[1]和ls2[1]的內(nèi)存地址分別為:',id(ls1[1]),id(ls2[1]))ls1[1][0]=5#將ls1下標(biāo)為1的列表元素(即ls[1])中下標(biāo)為0的元素值修改為5print('ls1和ls2的值分別為:',ls1,ls2)為了真正實現(xiàn)列表的復(fù)制操作,可以使用Python在copy模塊中提供的deepcopy函數(shù)。列表List示例02ls1和ls2的值分別為:[1,[2,3]][1,[2,3]]ls1和ls2的內(nèi)存地址分別為:19424834041041942484025224ls1[1]和ls2[1]的內(nèi)存地址分別為:19424834058961942484062280ls1和ls2的值分別為:[1,[5,3]][1,[2,3]]程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:示例02ls.index(x)通過列表中的index方法可以根據(jù)指定值查找第一個匹配的列表元素的位置。格式:ls值為3的元素第一次出現(xiàn)的位置為:1程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:其中,ls是要進(jìn)行元素查找操作的列表對象,x是要查找的元素值,返回值是ls中第一個值為x的元素的位置。例如:ls=[1,3,5,3]#使用list方法根據(jù)元組創(chuàng)建列表對象,并賦給ls變量print('ls值為3的元素第一次出現(xiàn)的位置為:',ls.index(3))列表List示例02ls.insert(index,x)通過列表中的insert方法可以將一個元素插入到列表的指定位置。格式:如果要在列表的最后添加新元素,則還可以直接使用列表的append方法,append方法的語法格式為:ls.append(x)列表List示例02ls=[1,2,3]#創(chuàng)建列表對象并賦給lsls.insert(0,'Python')#在ls列表下標(biāo)為0的位置插入新元素'Python'print(ls)#輸出lsls.insert(2,True)#在ls列表下標(biāo)為2的位置插入新元素Trueprint(ls)#輸出lsls.append([5,10])#在ls列表最后添加新元素[5,10]print(ls)#輸出ls示例:['Python',1,2,3]['Python',1,True,2,3]['Python',1,True,2,3,[5,10]]程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:列表List示例02ls=[0,1,2,3,4,5,6,7,8,9]#創(chuàng)建列表對象并賦給lsdells[8]#使用del將ls中下標(biāo)為8的元素刪除print(ls)#輸出lsls[1:6]=[]#將ls中下標(biāo)為1至5的元素刪除print(ls)#輸出ls使用del語句可以刪除某個變量或列表中的某個元素。如果要刪除列表中的連續(xù)多個元素,也可以截取列表中的連續(xù)多個元素并將其賦為空列表。[0,1,2,3,4,5,6,7,9][0,6,7,9]程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:列表List示例02max(ls)使用max方法可以獲取一個列表中最大元素的值,max方法的語法格式如下:ls中的最大元素值為:56程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:ls=[23,56,12,37,28]#創(chuàng)建列表對象并賦給lsprint('ls中的最大元素值為:',max(ls))#輸出ls中最大元素的值其中,ls是要獲取最大元素值的列表。例如,對于下面的代碼:列表List示例02min(ls)使用min方法可以獲取一個列表中最小元素的值,min方法的語法格式如下:ls中的最小元素值為:12程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:ls=[23,56,12,37,28]#創(chuàng)建列表對象并賦給lsprint('ls中的最小元素值為:',min(ls))#輸出ls中最小元素的值其中,ls是要獲取最小元素值的列表。例如,對于下面的代碼:列表List示例02ls.count(x)使用列表中的count方法可以統(tǒng)計某個值在列表中出現(xiàn)的次數(shù),count方法的語法格式如下:ls中值為37的元素個數(shù)為:2ls中值為28的元素個數(shù)為:1ls中值為56的元素個數(shù)為:0程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:ls=[23,37,12,37,28]#創(chuàng)建列表對象并賦給lsprint('ls中值為37的元素個數(shù)為:',ls.count(37))print('ls中值為28的元素個數(shù)為:',ls.count(28))print('ls中值為56的元素個數(shù)為:',ls.count(56))其作用是統(tǒng)計值x在列表ls中出現(xiàn)的次數(shù)。例如,對于下面的代碼:列表List示例02len(ls)使用len方法可以獲取一個列表中包含的元素數(shù)量(即列表長度),len方法的語法格式如下:ls的列表長度為:5程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:ls=[23,56,12,37,28]#創(chuàng)建列表對象并賦給lsprint('ls的列表長度為:',len(ls))#輸出ls中元素的數(shù)量其中,ls是要計算長度的列表。例如,對于下面的代碼:列表List示例02ls.sort(key=None,reverse=False)使用列表中的sort方法可以對列表中的元素按照指定規(guī)則進(jìn)行排序,sort方法的語法格式如下:其中,ls是待排序的列表;key接收一個函數(shù),通過該函數(shù)獲取用于排序時比較大小的數(shù)據(jù);reverse指定是將列表中的元素按升序(False,默認(rèn)值)還是按降序(True)排列。列表List示例021 classStudent:#定義學(xué)生類2 def__init__(self,sno,name):#定義構(gòu)造方法3 self.sno=sno#將self對象的sno屬性賦為形參sno的值4 =name#將self對象的name屬性賦為形參name的值5 def__str__(self):#定義內(nèi)置方法__str__6 return'學(xué)號:'+self.sno+',姓名:'+7 if__name__=='__main__':8 ls1=[23,56,12,37,28]#創(chuàng)建列表對象并賦給變量ls19 ls1.sort()#將ls1中的元素按升序排序10 print('ls1升序排序后的結(jié)果:',ls1)11 ls1.sort(reverse=True)#將ls1中的元素按降序排序12 print('ls1降序排序后的結(jié)果:',ls1)13 ls2=[Student('1810101','李曉明'),Student('1810100','馬紅'),Student('1810102','張剛')]#創(chuàng)建包含3個Student類對象的列表并賦給變量ls214 ls2.sort(key=lambdastu:stu.sno)#按學(xué)號升序排序15 print('ls2按學(xué)號升序排序后的結(jié)果:')16 forstuinls2:#遍歷ls2中的每名學(xué)生并輸出17 print(stu)18 ls2.sort(key=lambdastu:stu.sno,reverse=True)#按學(xué)號降序排序19 print('ls2按學(xué)號降序排序后的結(jié)果:')20 forstuinls2:#遍歷ls2中的每名學(xué)生并輸出21 print(stu)列表List示例02ls1升序排序后的結(jié)果:[12,23,28,37,56]ls1降序排序后的結(jié)果:[56,37,28,23,12]ls2按學(xué)號升序排序后的結(jié)果:學(xué)號:1810100,姓名:馬紅學(xué)號:1810101,姓名:李曉明學(xué)號:1810102,姓名:張剛ls2按學(xué)號降序排序后的結(jié)果:學(xué)號:1810102,姓名:張剛學(xué)號:1810101,姓名:李曉明學(xué)號:1810100,姓名:馬紅程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:列表List示例02元組TuplePART03元組Tuple【任務(wù)描述】了解元組的常用操作【關(guān)鍵步驟】了解元組的常用操作示例03t1=(1,'one','一')#創(chuàng)建元組對象并將其賦給變量t1,其包含3個元素t2=()#創(chuàng)建元組對象并將其賦給變量t2,其不包含任何元素、因此是一個空元組print('t1的值為:',t1)print('t2的值為:',t2)元組就是用一對小括號括起來的多個元素的有序集合,各元素之間用逗號分隔。不包含任何元素的是一個空元組。t1的值為:(1,'one','一')t2的值為:()程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:元組Tuple示例03t=tuple([1,'one','一'])#使用tuple方法根據(jù)列表創(chuàng)建元組對象,并賦給t變量print('t的值為:',t)print('t的第一個元素和最后一個元素的值分別為:',t[0],t[-1])print('t的前兩個元素的值為:',t[0:-1])除使用一對小括號創(chuàng)建列表對象的這種方式外,還可以利用Python的內(nèi)置方法tuple根據(jù)一個列表創(chuàng)建一個元組對象。t的值為:(1,'one','一')t的第一個元素和最后一個元素的值分別為:1一t的前兩個元素的值為:(1,'one')程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:元組Tuple示例03t1=(15)#不加逗號,則t1是一個整型變量t2=(15,)#加逗號,則t2是一個元組print('t1的類型為:',type(t1))print('t2的類型為:',type(t2))如果創(chuàng)建的元組中只包含單個元素,則需要在這唯一的一個元素后面添加逗號,t1的類型為:<class'int'>t2的類型為:<class'tuple'>程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:元組Tuple示例03t1=(1,2,3)#創(chuàng)建元組對象并賦給變量t1t2=('Python','C++')#創(chuàng)建元組對象并賦給變量t2t3=t1+t2#通過拼接運(yùn)算“+”將t1和t2連接生成一個新的列表對象并賦給t3print('t1和t2的值分別為:',t1,t2)print('t3的值為:',t3)雖然元組中的元素值不允許修改,但通過拼接運(yùn)算可以兩個元組連接、生成一個新元組。t1和t2的值分別為:(1,2,3)('Python','C++')t3的值為:(1,2,3,'Python','C++')程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:元組Tuple示例03max(t)使用max方法可以獲取一個元組中最大元素的值,max方法的語法格式如下:t中的最大元素值為:56程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:t=(23,56,12,37,28)#創(chuàng)建元組對象并賦給tprint('t中的最大元素值為:',max(t))#輸出t中最大元素的值其中,t是要獲取最大元素值的元組。例如,對于下面的代碼:元組Tuple示例03min(t)使用min方法可以獲取一個元組中最小元素的值,min方法的語法格式如下:t中的最小元素值為:12程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:t=(23,56,12,37,28)#創(chuàng)建元組對象并賦給tprint(‘t中的最小元素值為:’,min(t))#輸出t中最小元素的值其中,t是要獲取最小元素值的元組。例如,對于下面的代碼:元組Tuple示例03元組中的元素值不允許修改,因此,元組不支持sort等需要修改元素值的方法。元組Tuple示例03集合SetPART04Python中的集合(set)由若干無序的元素組成,每個元素都是唯一的(即集合中不能包含重復(fù)值的元素)且必須是可哈希類型的數(shù)據(jù)??梢允褂靡粚Υ罄ㄌ杮}或set函數(shù)創(chuàng)建集合,如果要創(chuàng)建空集合則只能使用set函數(shù)。創(chuàng)建集合集合Set【任務(wù)描述】了解集合及其特性了解集合常用操作【關(guān)鍵步驟】了解集合及其特性了解集合常用操作示例01s=set([23,37,12,37,28])#創(chuàng)建集合對象并賦給sprint('s的值為:',s)#輸出s集合中不能包含有重復(fù)值的元素。如果創(chuàng)建集合或向集合中插入元素時,指定的元素具有重復(fù)值,則集合會自動過濾掉重復(fù)值的元素、使得每種取值的元素只保留一個。s的值為:{28,12,37,23}程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:集合Set示例01s.add(x)集合中提供了兩種插入元素的方法,分別是add和update。add方法的語法格式為:s.update(x)其作用是把x作為一個新的元素插入到集合s中,其中x必須是一個可哈希對象。update方法的語法格式為:其作用是把x拆分成多個元素后再將這多個元素插入到集合中,其中x必須是一個可迭代對象。集合Set示例011 s1=set([1,2])#創(chuàng)建集合對象并賦給變量s12 s2=set([1,2])#創(chuàng)建集合對象并賦給變量s23 s1.add('Python')#使用add方法向s1中插入元素'Python'4 s2.update('Python')#使用update方法將'Python'拆分成多個元素再插入到s2中5 print('s1的值為:',s1)6 print('s2的值為:',s2)7 #s1.add([4,5])#取消前面的注釋則會報錯8 s2.update([4,5])#使用update方法將[4,5]拆分成多個元素再插入到s2中9 print('s1的值為:',s1)10 print('s2的值為:',s2)11 s1.add(3)#使用add方法向s1中插入元素312 #s2.update(3)#取消前面的注釋則會報錯add方法和update方法使用示例集合Set示例01s1的值為:{1,2,'Python'}s2的值為:{'y',1,2,'t','n','h','P','o'}s1的值為:{1,2,'Python'}s2的值為:{'y',1,2,'t',4,'n',5,'h','P','o'}示例01程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:ersection(s2)集合中的intersection方法可以用于計算一個集合與另一個集合的交集。其作用是計算s1和s2的交集并返回。intersection方法不會修改s1和s2本身的值。集合Set示例01s1.union(s2)集合中的union方法可以用于計算一個集合與另一個集合的并集。其作用是計算s1和s2的并集并返回。union方法不會修改s1和s2本身的值。集合Set示例01s1.difference(s2)集合中的difference方法可以用于計算一個集合與另一個集合的差集。其作用是計算s1和s2的差集并返回,差集是指由包含在s1中但不包含在s2中的元素組成的集合。difference方法不會修改s1和s2本身的值。集合Set示例01s1.symmetric_difference(s2)集合中的symmetric_difference方法可以用于計算一個集合與另一個集合的對稱差集。其作用是計算s1和s2的對稱差集并返回,對稱差集是指由只包含在s1中或只包含在s2中的元素組成的集合。symmetric_difference方法不會修改s1和s2本身的值。集合Set示例01s1=set([1,2,3])#創(chuàng)建集合對象并賦給變量s1s2=set([2,3,4])#創(chuàng)建集合對象并賦給變量s2s3=ersection(s2)#計算s1和s2的交集,并將返回集合賦給s3s4=s1.union(s2)#計算s1和s2的并集,并將返回集合賦給s4s5=s1.difference(s2)#計算s1和s2的差集,并將返回集合賦給s5s6=s1.symmetric_difference(s2)#計算s1和s2的對稱差集,并將返回集合賦給s6print('s1和s2的值分別為:',s1,s2)print('s1和s2的交集為:',s3)print('s1和s2的并集為:',s4)print('s1和s2的差集為:',s5)print('s1和s2的對稱差集為:',s6)交集、并集、差集、對稱差集示例集合Set示例01s1和s2的值分別為:{1,2,3}{2,3,4}s1和s2的交集為:{2,3}s1和s2的并集為:{1,2,3,4}s1和s2的差集為:{1}s1和s2的對稱差集為:{1,4}程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:示例01s1.issubset(s2)集合中的issubset方法可以用于判斷一個集合是否是另一個集合的子集。其作用是判斷s1是否是s2的子集。如果s1是s2的子集,則返回True;否則,返回False。集合Set示例01s1.issuperset(s2)集合中的issuperset方法可以用于判斷一個集合是否是另一個集合的父集。其作用是判斷s1是否是s2的父集(即判斷s2是否是s1的子集)。如果s1是s2的父集,則返回True;否則,返回False。集合Set示例01s1=set([1,2,3,4])#創(chuàng)建集合對象并賦給變量s1s2=set([2,3,4,5])#創(chuàng)建集合對象并賦給變量s2s3=set([1,3])#創(chuàng)建集合對象并賦給變量s3print('s3是s1的子集:',s3.issubset(s1))print('s1是s3的父集:',s1.issuperset(s3))print('s3是s2的子集:',s3.issubset(s2))print('s2是s3的父集:',s3.issuperset(s2))子集、父集示例s3是s1的子集:Trues1是s3的父集:Trues3是s2的子集:Falses2是s3的父集:False程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:集合Set示例01字典DictionaryPART02與集合類似,字典(dictionary)也是由若干無序的元素組成。但與集合不同的是,字典是一種映射類型,字典中的每個元素都是鍵(key):值(value)的形式。字典中每個元素鍵的取值必須唯一(即集合中不能包含鍵值的元素)且必須是可哈希類型的數(shù)據(jù),但對于每個元素值的取值則沒有任何限制。字典的主要應(yīng)用是做數(shù)據(jù)的快速檢索。實際使用字典時,將要查詢的數(shù)據(jù)作為鍵,將其他數(shù)據(jù)作為值。例如,在進(jìn)行學(xué)生信息管理時,經(jīng)常要根據(jù)學(xué)號進(jìn)行學(xué)生信息的查詢,此時就可以將學(xué)號作為鍵、而將其他信息作為值。可以使用一對大括號{}或dict函數(shù)創(chuàng)建字典,如果要創(chuàng)建空字典可以使用{}或dict()。創(chuàng)建字典字典Dictionary【任務(wù)描述】了解字典及其特性了解字典常用操作【關(guān)鍵步驟】了解字典及其特性了解字典常用操作示例02d.fromkeys(seq[,value])使用fromkeys方法進(jìn)行字典初始化的方法。a其中,d是一個已創(chuàng)建的字典對象;seq是一個包含了字典所有鍵名的序列;value是一個可選參數(shù),其指定了各元素的初始值,默認(rèn)情況下所有元素的值都被賦為None。字典Dictionarya示例02d1={}.fromkeys(['sno','name','major'])d2=dict().fromkeys(['sno','name','major'],'Unknown')print('d1的值為:',d1)print('d2的值為:',d2)示例:d1的值為:{'sno':None,'name':None,'major':None}d2的值為:{'sno':'Unknown','name':'Unknown','major':'Unknown'}程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:字典Dictionary示例02d.update(d2)#用另一個字典對象d2的元素修改或插入字典對象d的元素或d.update(鍵1=值1,鍵2=值2,…,鍵N=值N)#用鍵值列表修改或插入字典對象d的元素給指定鍵的元素賦值時,如果該鍵在字典中已存在,則會將該鍵對應(yīng)的元素值做修改;如果該鍵在字典中不存在,則會在字典中插入一個新元素。另外,也可以使用字典中的update方法一次修改或插入多個元素,update方法的語法格式為:字典Dictionary示例011 stu=dict(sno='1810101')#創(chuàng)建字典對象并賦給變量stu2 print(stu)#輸出stu的值3 stu['sno']='1810100'#將鍵為'sno'的元素的值修改為'1810100'4 print(stu)#輸出stu的值5 stu['name']='李曉明'#插入一個鍵為'name'的元素,其值為'李曉明'6 print(stu)#輸出stu的值7 stu.update({'name':'馬紅','age':19})8 print(stu)#輸出stu的值9 stu.update(name='張剛',major='計算機(jī)')10 print(stu)#輸出stu的值示例:字典Dictionary示例02{'sno':'1810101'}{'sno':'1810100'}{'sno':'1810100','name':'李曉明'}{'sno':'1810100','name':'馬紅','age':19}{'sno':'1810100','name':'張剛','age':19,'major':'計算機(jī)'}程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:示例02d.pop(key[,default])使用del可以刪除某個元素,也可以使用字典中的pop方法刪除指定鍵的元素。其作用是從字典d中刪除鍵為key的元素并返回該元素的值;如果d中不存在鍵為key的元素,則返回default參數(shù)的值。字典Dictionary示例021 d=dict(sno='1810100',name='李曉明',age=19)#創(chuàng)建字典對象并賦給變量d2 print('第2行輸出的字典d:',d)#輸出d的值3 deld['age']#使用del刪除d中鍵為'age'的元素4 name=d.pop('name')#使用pop刪除d中鍵為'name'的元素,并將返回的元素值賦給name5 print('name的值為:',name)6 print('第6行輸出的字典d:',d)7 major=d.pop('major','Notfound')#使用pop刪除d中鍵為'major'的元素,并將返回的元素值賦給major8 print('major的值為:',major)示例:字典Dictionary示例02第2行輸出的字典d:{'sno':'1810100','name':'李曉明','age':19}name的值為:李曉明第6行輸出的字典d:{'sno':'1810100'}major的值為:Notfound程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:示例02len(d)使用Python提供的len方法可以計算字典中的元素個數(shù),len方法的語法格式為:字典d中的元素個數(shù)為:3程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:其中,d為要計算元素個數(shù)的字典。例如,對于下面的代碼:d=dict(sno='1810100',name='李曉明',age=19)#創(chuàng)建字典對象并賦給變量dprint('字典d中的元素個數(shù)為:',len(d))字典Dictionary示例02d.clear()使用字典中的clear方法可以一次將一個字典中的所有元素都清除,clear方法的語法格式為:字典d中的元素個數(shù)為:3字典d中的元素個數(shù)為:0程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:其中,d為要清除元素的字典。例如,對于下面的代碼:d=dict(sno='1810100',name='李曉明',age=19)#創(chuàng)建字典對象并賦給變量dprint('字典d中的元素個數(shù)為:',len(d))d.clear()#調(diào)用clear方法清除d中的所有元素print('字典d中的元素個數(shù)為:',len(d))字典Dictionary示例02d.get(key,default=None)我們可以使用兩種方法判斷字段中是否存在某個鍵。一種方法是使用字典中的get方法,其語法格式為:其作用是從字典d中獲取鍵為key的元素的值并返回。如果在字典d中不存在鍵為key的元素,則返回default參數(shù)的值(默認(rèn)為None)。另一種方法是使用成員運(yùn)算符in。字典Dictionary示例02d=dict(sno='1810100',name='李曉明')#創(chuàng)建字典對象并賦給變量difd.get('sno')!=None:#如果get方法返回的不是Noneprint('字典d中存在鍵為sno的元素')else:#否則

print('字典d中不存在鍵為sno的元素')if'name'ind:#如果字典d中有鍵為'name'的元素

print('字典d中存在鍵為name的元素')else:print('字典d中不存在鍵為name的元素')ifd.get('age')!=None:#如果get方法返回的不是Noneprint('字典d中存在鍵為age的元素')else:#否則

print('字典d中不存在鍵為age的元素')示例:字典Dictionary示例02字典d中存在鍵為sno的元素字典d中存在鍵為name的元素字典d中不存在鍵為age的元素程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:示例02第一種:

dMerge=dict(d1,**d2)第二種:

dMerge=d1.copy() dMerge.update(d2)這里介紹2種不同的字典拼接方法:其中,d1和d2是待拼接的兩個字典,dMerge用于保存拼接后的字典。字典Dictionary示例02d1=dict(sno='1810100',name='李曉明')#創(chuàng)建字典對象并賦給變量d1d2=dict(age=19)#創(chuàng)建字典對象并賦給變量d2dMerge1=dict(d1,**d2)print('dMerge1的值為:',dMerge1)dMerge2=d1.copy()#使用copy方法復(fù)制d1生成新的字典對象并賦給dMerge2dMerge2.update(d2)#根據(jù)d2中的元素對dMerge2進(jìn)行修改/插入操作print('dMerge2的值為:',dMerge2)示例:dMerge1的值為:{'sno':'1810100','name':'李曉明','age':19}dMerge2的值為:{'sno':'1810100','name':'李曉明','age':19}程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:字典Dictionary示例02d.keys()使用字典中的keys方法可以獲取一個字典所有的鍵,keys方法的語法格式為:d中的鍵為:dict_keys(['sno','name'])程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:d=dict(sno='1810100',name='李曉明')#創(chuàng)建字典對象并賦給變量dprint('d中的鍵為:',d.keys())其作用是返回一個包含d中所有鍵的對象。例如,對于下面的代碼:字典Dictionary示例02d.values()使用字典中的values方法可以獲取一個字典所有的值,values方法的語法格式為:d中的值為:dict_values(['1810100','李曉明'])程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:d=dict(sno='1810100',name='李曉明')#創(chuàng)建字典對象并賦給變量dprint('d中的鍵為:',d.values())其作用是返回一個包含d中所有值的對象。例如,對于下面的代碼:字典Dictionary示例02d.items()使用字典中的items方法可以返回一個可按(鍵,值)方式遍歷的對象,items語法格式為:sno1810100name李曉明程序執(zhí)行完畢后,將在屏幕上輸出如下結(jié)果:d=dict(sno='1810100',name='李曉明')#創(chuàng)建字典對象并賦給變量dforkey,valueind.items():print(key,value)其中,d是一個字典。例如,對于下面的代碼:字典Dictionary示例02d.copy()使用字典中的copy方法可以實現(xiàn)一個字典的淺拷貝。copy方法的語法格式為:其作用是返回一個對字典d進(jìn)行淺拷貝而得到的新字典。字典Dictionary示例021 stu1={'name':'李曉明','age':19,'score':{'python':95,'mat

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論