《Python程序設計基礎(chǔ)(第2版)》課件 03Python容器數(shù)據(jù)類型_第1頁
《Python程序設計基礎(chǔ)(第2版)》課件 03Python容器數(shù)據(jù)類型_第2頁
《Python程序設計基礎(chǔ)(第2版)》課件 03Python容器數(shù)據(jù)類型_第3頁
《Python程序設計基礎(chǔ)(第2版)》課件 03Python容器數(shù)據(jù)類型_第4頁
《Python程序設計基礎(chǔ)(第2版)》課件 03Python容器數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Python程序設計基礎(chǔ)第3章Python容器數(shù)據(jù)類型教師:xxx第3章Python容器數(shù)據(jù)類型3.1列表list3.2元組tuple3.3字典dict3.4集合set3.5可變類型和不可變類型第3章Python容器數(shù)據(jù)類型除基本類型外,Python還提供了容器數(shù)據(jù)類型,可容納批量數(shù)據(jù)。容器類型主要分為:序列類型、映射類型和集合類型。序列類型的元素都有索引序號,有序排列,可通過索引訪問元素。序列類型包括:字符串、列表和元組。s='abc';s[0];s[1];lst=[10,20,15];lst[0];lst[2];映射類型的元素由鍵(key)和值(value)組成,稱為“鍵值對”,鍵必須唯一。字典屬于映射類型。s={'name':'張杰','age':20};s['name'];s['age']=21集合類型中的元素無序(不能用索引訪問)且不允許重復,類似數(shù)學中的集合。s=set((1,3,8,7))3.1列表list列表:Python中最常用的序列類型。它由一系列包含在方括號“[]”中的元素組成,元素之間用逗號分隔。lst=[10,20,30,40,50]列表具有如下特性:(1)列表中元素類型可以相同,也可以不同;(2)每個元素都有索引和值兩個屬性,索引用于標識元素在列表中的位置,值指的是元素對應的值。例如lst[0],lst[-1]索引可用正索引和負索引。正索引從0開始,-1則對應最后一個元素。從左向右遞增從右向左遞減3.1列表list3.1.1創(chuàng)建列表和存取列表元素創(chuàng)建格式:x=[元素1,元素2,…]或

x=list(對象)In:lst=[] #創(chuàng)建空列表

或lst=list()In:

[12,3.0,'python'] #列表元素的數(shù)據(jù)類型可以不同In:list('python') #字符串的每個字符為列表的一個元素Out:['p','y','t','h','o','n']In:lst=list(range(5))#[0,1,2,3,4]In:lst=list(range(1,10,2))#[1,3,5,7,9]3.1列表list3.1.2列表基本操作1.訪問列表元素可以使用索引訪問列表中的元素,其格式為:列表對象[index]index:元素索引例:訪問列表中元素(1)獲取lst列表中索引為1,-1的元素(序號從0開始)In:lst=[1,2,3]In:lst[1],lst[-1]Out:(2,3)注意:該列表3個元素,對應索引0,1,2。lst[3]將報錯,下標越界。3.1列表list(2)修改lst列表中索引為1的元素的值In:lst=[1,2,3]In:lst[1]=5 #將索引為1的元素的值修改為5Out:[1,5,3]2.列表合并可以使用運算符“+”將兩個列表合并在一起。In:[1,2]+[3,'abc']Out:[1,2,3,'abc']3.重復可以使用運算符“*”創(chuàng)建具有重復元素的列表。In:[1,2]*3#創(chuàng)建元素“1,2”重復3次的列表Out:[1,2,1,2,1,2]3.1列表list4.迭代迭代操作用于遍歷列表中的元素。lst=[1,2,3,4]forxinlst:print(x)#將輸出1,2,3,4,分4行5.成員判斷使用“in”操作符判斷對象是否屬于列表,返回邏輯值。In:2in[1,2,3]Out:TrueIn:5in[1,2,3]Out:False3.1列表list3.1.3列表常用函數(shù)表3.1列表對象lst的常用函數(shù)

函數(shù)名說明lst.append(x)在尾部添加新元素xlst.index(x)返回x在列表中的索引位置,不含x將返回一個運行時錯誤lst.count(x)統(tǒng)計指定元素值x的出現(xiàn)次數(shù)dellst[index]刪除列表對象中索引為index的元素lst.extend(lst2)將lst2的元素添加到lst中l(wèi)st.insert(index,x)在index位置插入新元素xlen(lst)列表長度(注意:不能寫為lst.len)lst.pop()刪除尾部元素,并返回刪除對象lst.remove(x)刪除元素xlst.reverse()將列表元素前后顛倒lst.sort()默認從小到大排序3.1列表list【例】列表常用函數(shù)的應用(1)在lst列表末尾添加元素,定位元素In:lst=[1,2,3]In:lst.append(5)#末尾插入In:lstOut:[1,2,3,5]In:lst.index(1) #數(shù)據(jù)1在列表的第0個位置Out:0In:lst.index(4) #將報錯,列表中不包含數(shù)據(jù)4ValueError:4isnotinlist(2)統(tǒng)計lst列表中元素值2出現(xiàn)的次數(shù)In:lst=[1,2,2,2,3]In:lst.count(2)Out:3#2出現(xiàn)了3次In:lst.count(4) #不含4,返回0次Out:03.1列表list(3)刪除lst列表索引為1的元素In:lst=[1,2,3]In:dellst[1] #del方法是獨立的,可刪除所有變量

In:lstOut:[1,3](4)將列表x中元素添加到lst列表中去In:lst=[1,2,3]In:x=[4,5]In:lst.extend(x)In:lstOut:[1,2,3,4,5]lst.extend(4)#錯誤,extend方法要求括號內(nèi)應為列表。lst.extend和lst.append效果不同,對比如下:lst2=[1,2,3]lst2.append(x)Out:[1,2,3,[4,5]]#x作為一個整體append添加到lst2的末尾3.1列表list(5)在lst列表索引為1的位置插入值5lst=[1,2,3]lst.insert(1,5)#1是索引位置Out:[1,5,2,3]lst.insert(0,8)Out:[8,1,5,2,3](6)獲取lst列表的長度,即列表元素的個數(shù)lst=[1,2,3]len(lst)Out:3sum(lst) #求和6sum(lst)/len(lst) #求平均值23.1列表list(7)pop刪除lst列表指定索引位置的元素,并返回該刪除元素lst=[1,2,3]x=lst.pop(1)In:xOut:2In:lstOut:[1,3](8)remove刪除列表元素,如有多個,只刪第一個lst=[1,2,3,2,2,2,4]lst.remove(2) lstOut:[1,3,2,2,2,4]while2inlst:#循環(huán),刪除所有的2lst.remove(2)3.1列表list(9)將lst列表中元素反轉(zhuǎn)lst=[1,2,5,4]lst.reverse()lstOut:[4,5,2,1](10)對lst列表中元素排序,參數(shù)reverse=True為逆序從大到小排序,默認reverse=False升序。lst=[1,4,3,5,2]lst.sort()#改變列表自身lstOut:[1,2,3,4,5]如果排序時不想改變舊列表,可寫為lst2=sorted(lst)。sorted()函數(shù)排序后返回新的有序列表,原列表不變。3.1列表list列表逆序排序lst=[1,4,3,5,2]lst.sort(reverse=True)#參數(shù)reverse=True表示逆序從大到小lstOut:[5,4,3,2,1]注意:列表涉及數(shù)據(jù)變動的方法一般都直接改變列表本身,沒有返回值(可視為返回空值None),應寫為"lst.方法(),不要寫為lst=lst.方法()"例如"

lst=lst.sort(),lst=lst.append(5)"的寫法都是錯誤的,因為沒有返回值,則返回None,lst=None將丟失原有的列表。3.1列表list3.1.4切片列表的切片操作是從列表中獲得多個元素的操作。切片格式:

列表對象[start:end:step]start:切片的開始索引位置,可省略,默認為0;end:切片的終止索引位置(不包括),可省略,默認為列表長度;step:步長,表示截取數(shù)據(jù)的步長,正數(shù)表示從左向右截取,負數(shù)表示從右向左截取,可省略但不能為0,默認為1。lst=[1,2,3,5,6,7]lst[1:4]Out:[2,3,5] 3.1列表list【例】列表切片應用In:lst=[1,2,3,4,5]#從左向右截取列表lst從索引1到索引3的元素In:lst[1:4] Out:[2,3,4]In:lst[1:] #截取列表lst從索引為1到末尾的元素Out:[2,3,4,5]In:lst[:4] #截取列表lst從索引0到索引3的元素Out:[1,2,3,4]#截取列表lst從索引為1到索引為3,步長為2的元素In:lst[1:4:2] Out:[2,4]3.1列表list【例】列表切片應用In:lst=[1,2,3,4,5]In:lst[-4:-1] #截取列表lst從索引為-4到索引為-2Out:[2,3,4]#步長為負,從右向左截取列表lst從索引為3到索引為1的元素#步長為負時要求起始索引>結(jié)束索引,否則切片將為空In:lst[3:0:-1] Out:[4,3,2]#步長為負,從右向左截取列表lst從索引為-2到索引為-4的元素In:lst[-2:-5:-1] Out:[4,3,2]3.1列表list3.1.5列表生成方式1.產(chǎn)生一個數(shù)值遞增列表range()函數(shù)可以產(chǎn)生一個數(shù)值遞增的可迭代對象,基本格式為:range(start,end,step)start:起始元素值,可以省略,默認為0;end:結(jié)束元素值(不包括end),不能省略;step:整數(shù)步長,正數(shù)表示數(shù)值遞增,負數(shù)表示數(shù)值遞減,可以省略但不能為0,默認為1。

注意:range函數(shù)不直接生成所有數(shù)據(jù),一般配合for或list使用。#產(chǎn)生一個數(shù)值從1到4的迭代對象itit=range(1,5) lst=list(it)

#由迭代對象創(chuàng)建列表lstOut:[1,2,3,4]list(range(2,10,2))#步長2,得到[2,4,6,8]3.1列表list2.產(chǎn)生多維列表多維列表可視為列表中嵌套列表。例如,二維列表可以看作是每一個元素都是一維列表的列表,三維列表可以看作是每一個元素都是二維列表的列表。例:創(chuàng)建一個二維列表lst=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]lst[0]#輸出[1,2,3,4]lst[0][1]#輸出2,不能寫為lst[0,1]1234567891011123.1列表list例:多維列表的訪問。lst=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]#獲取第0維索引為1,第1維索引為2的數(shù)據(jù)lst[1][2] Out:7#獲取第0維索引為1的數(shù)據(jù),是一個一維列表lst[1] Out:[5,6,7,8]在訪問多維列表中的元素時,使用如下格式:列表對象[索引][索引]其中第一個“[]”為列表的第0維,第二個為第1維,以此類推。3.1列表list3列表生成式列表還可用列表生成式語法產(chǎn)生。新列表對象=[表達式for變量in可迭代對象<if條件>] 它表示從可迭代對象中取得變量的值,代入表達式計算得到新值,由這些新值構(gòu)成新的列表。<if條件>是可選的,如果有篩選條件,那么滿足條件的值才能加入新列表。lst=[0,1,2,3,4,5]#列表生成式,將lst列表中的每個元素平方,得到列表lst2lst2=[x**2forxinlst] lst2Out:[0,1,4,9,16]#抽取在lst2中但不在lst中的元素得到列表lst3lst3=[xforxinlst2ifxnotinlst]lst3Out:[9,16][xforxinrange(20)ifx%3==0]#[0,20)內(nèi)的3的倍數(shù)Out:[0,3,6,9,12,15,18]3.1列表list編程:生成100個0-9的隨機整數(shù),計算平均值,統(tǒng)計每個數(shù)的出現(xiàn)次數(shù)。importrandomlst=[random.randint(0,9)for_inrange(100)]print('平均值為:',sum(lst)/len(lst))forxinrange(10):print(f'{x}的個數(shù)為{lst.count(x)}')3.2元組tuple元組是用一對圓括號“()”定義的序列,元素間逗號分隔。例如:yz=(3,4,5,3);yz[1]元組創(chuàng)建后,元組中的值不能修改(增/刪/改)。3.2.1創(chuàng)建元組和存取元組元素1.元組創(chuàng)建可以用圓括號“yz=(值1,值2...)”創(chuàng)建,也可用

yz=tuple(可迭代對象)來創(chuàng)建。可迭代對象:字符串、列表、元組、字典、集合等yz=(3,4,5)yz=3,4,5#可以省略()yz=3,#如果創(chuàng)建只含一個元素的元組,必須有,yz=tuple('python')#('p','y','t','h','o','n')3.2元組tuple例:創(chuàng)建三個元素的元組tpl=(1,2,3) #使用“()”創(chuàng)建元組tplOut:(1,2,3)#使用tuple()函數(shù)創(chuàng)建元組,將列表轉(zhuǎn)為元組tpl2=tuple([1,2,3]) tpl2Out:(1,2,3)

it=range(1,5) #產(chǎn)生可迭代對象#使用tuple()函數(shù)創(chuàng)建元組,參數(shù)為可迭代對象tpl=tuple(it) tplOut:(1,2,3,4)3.2元組tuple2.索引和切片【例】元組的索引操作和切片操作(1)訪問元組tpl中索引為1的元素tpl=(1,2,3)tpl[1]Out:2tpl[1]=10 #報錯,元組不允許修改tpl.append(20) #報錯,元組不能增加元素(2)截取元組tpl從索引位置為1到索引位置為3的元素tpl=(1,2,3,4,5)tpl[1:4]Out:(2,3,4)3.2元組tuple3.其他操作(1)元組求長度tpl=(1,2,3)len(tpl)Out:3(2)合并兩個元組y1=(1,2,3);y2=(4,5)y3=y1+y2Out:(1,2,3,4,5)注意,由于元組不能修改,因此合并元組不是在已有的元組中添加元素,而是產(chǎn)生一個新元組。id(y1)#顯示y1的內(nèi)存地址y1=y1+y2 #算不算在y1元組增加數(shù)據(jù)?id(y1)#可觀察到前后兩個id()返回的地址不同,說明不是舊的y13.2元組tuple(4)迭代元組中所有元素tpl=(1,2,3)forxintpl:print(x)(3)重復,創(chuàng)建一個元素“1,2”重復3次的元組(1,2)*3#(1,2,1,2,1,2)(5)判斷對象是否為元組中的元素2in(1,2,3) #True5in(1,2,3) #False(6)統(tǒng)計tpl元組中元素值2出現(xiàn)的次數(shù)tpl=(1,2,2,2,3)tpl.count(2) #33.2元組tuple3.2.2元組和列表的差異元組不能修改,元組更節(jié)省內(nèi)存,適合作為函數(shù)參數(shù)或返回值傳遞。

觀察列表和元組對象支持的方法:dir([1,2])#列表對象支持11個方法dir((1,2))#元組對象僅支持count,index兩個方法列表和元組相互轉(zhuǎn)換的函數(shù)為tuple(lst)和list(tpl)。例:將tpl元組中索引位置1的值改為5。tpl=(1,2,3)lst=list(tpl) #先將元組轉(zhuǎn)為列表lst[1]=5tpl=tuple(lst) #再將列表轉(zhuǎn)為元組tplOut:(1,5,3)3.2元組tuple3.2.3序列操作函數(shù)表3.2常用的序列操作函數(shù)函數(shù)名功能all()判斷序列對象的每個元素是否都為Trueany()判斷序列對象是否有為True值的元素range(start,stop[,step])產(chǎn)生一個從start開始,到stop結(jié)束(不包括stop)的序列,step為步長,start默認值為0,step默認值為1reversed()反轉(zhuǎn)序列,生成新的可迭代對象sorted(iter)對序列對象iter進行排序,返回一個新的有序列表zip(iter1[,iter2,…])將多個迭代對象相同位置的元素聚合成元組,返回一個以元組為元素的可迭代對象enumerate(iter)返回由(序號,值)構(gòu)成的元組對3.2元組tuple【例】常用的序列操作函數(shù)score=[90,61,70]lst=[x>60forxinscore]#[True,True,True]all(lst) #判斷l(xiāng)st是否所有元素都可視為TrueOut:Trueall([0,1,2,'Python']) #0對應的布爾值為FalseOut:Falseany([0,1,2,'Python']) #是否有元素為真Out:Truelst=[3,2,5,4]sorted(lst) #排序返回新列表,舊的不變Out:[2,3,4,5]3.2元組tuplelst=[3,2,5,4]r=reversed(lst) #反轉(zhuǎn),生成可迭代對象rlist(r) #由可迭代對象創(chuàng)建列表Out:[4,5,2,3]#zip產(chǎn)生一個以兩個列表元素聚合成元組的新迭代對象z=zip(['a','b','c'],[1,2,3])list(z) #由可迭代對象創(chuàng)建列表Out:[('a',1),('b',2),('c',3)]fori,vinenumerate(['x','y','z']): #返回(序號,值)元組對

print(i,v) #i是序號,v是數(shù)據(jù)Out:0x1y2z3.2元組tuple編程:構(gòu)造10個學生元組對(姓名,分數(shù)),存入學生列表stu,輸出列表及平均分和不及格人數(shù)。姓名用'A','B',.....'J'對應,分數(shù)為(40,100)之間隨機整數(shù)。importrandomstu=[] #先創(chuàng)建空列表forcin'ABCDEFGHIJ':yz=(c,random.randint(40,100))stu.append(yz) #學生元組加入列表print(stu)score=sum([s[1]forsinstu]) #用列表生成式計算總分print('平均分:',score/len(stu))stu2=[sforsinstuifs[1]<60] #抽取不及格,得到stu2print('不及格人數(shù):',len(stu2))3.3字典dict字典(dict)是映射(Map)類數(shù)據(jù)(非序列),是由鍵值對構(gòu)成的數(shù)據(jù)容器。搜索字典中的元素,首先查找鍵,根據(jù)鍵獲取對應的值。這是一種高效、快速的查找方法。字典中鍵必須唯一,不能重復,值可以重復。鍵必須是不可變數(shù)據(jù)(不能是列表/字典/集合等可變數(shù)據(jù)),值可以是任何數(shù)據(jù)。role={'life':100,'武力':200,

1:12,2:20}stu={'id':'1','name':'john','age':20,'score':[89,90]}type(role)Out:dict#字典類型3.3字典dict3.3.1創(chuàng)建字典和存取鍵值對1.創(chuàng)建字典di={} #空字典di={'學號':'001','姓名':'zhangsan','年齡':19}di=dict(學號='001',姓名='zhangsan',年齡=19)#di2錯誤,鍵不能是可變類型(如列表或集合)di2={[1,2]:"A",{3}:"A"}字典中的每個元素都包含鍵和值兩部分。鍵和值用冒號“:”隔開,鍵值對之間用逗號“,”分開。創(chuàng)建格式為:{鍵1:值1,鍵2:值2,…}或dict(鍵1=值1,鍵2=值2,…)3.3字典dict2.字典的訪問訪問字典元素的格式為:字典對象[key]key:字典中元素的鍵,返回該鍵對應的值注:只能通過鍵訪問值,不能通過值取得鍵。例:訪問字典中元素dct={'學號':'001','姓名':'zhangsan','年齡':19}dct['姓名']Out:'zhangsan'dct['001']#錯誤,沒有'001'鍵KeyError:'001'dct[1]#錯誤,字典不是序列類,沒有索引序號3.3字典dict3.添加和修改字典元素

字典元素的添加和修改格式為:字典對象[key]=valuekey:元素的鍵;value:元素的值注:當key存在就是修改,key不存在則是添加例dct={'學號':'001','姓名':'zhangsan','年齡':19}#添加鍵為“性別”,值為“男”的數(shù)據(jù)dct['性別']='男' dctOut:{'學號':'001','姓名':'zhangsan','年齡':19,'性別':'男'}dct['年齡']=20 #修改“年齡”的值為20dctOut:{'學號':'001','姓名':'zhangsan','年齡':20,'性別':'男'}3.3字典dict3.3.2字典對象dct的常用方法

函數(shù)名說明dct.clear

()清除字典中所有元素dct.copy()復制整個字典deldct[key]刪除字典對象中鍵為key的元素dct.get(key,default)返回鍵key對應的值,如不存在key鍵則返回defaultdct.items()返回所有鍵值對dct.keys()返回所有鍵dct.values()返回所有值dct.update(dct2)用字典dct2的數(shù)據(jù)更新字典dctdct.pop(key,default)返回鍵key對應的值,并刪除該元素,如不存在key鍵則返回default3.3字典【例】字典常用函數(shù)的應用(1)clear清除字典對象中所有元素dct={'學號':'001','姓名':'zhangsan','年齡':19}dct.clear()dctOut:{}(2)復制字典對象dctdct={'學號':'001','姓名':'zhangsan','年齡':19}d=dct.copy()dOut:{'學號':'001','姓名':'zhangsan','年齡':19}d==dctOut:True3.3字典(3)刪除字典對象中的元素dct={'學號':'001','姓名':'zhangsan','年齡':19}deldct['年齡']dctOut:{'學號':'001','姓名':'zhangsan'}(4)獲得字典對象中鍵對應的值dct={'學號':'001','姓名':'zhangsan','年齡':19}dct.get('年齡')#獲取字典中鍵為“年齡”的值Out:19dct['性別']#將報錯dct.get('性別')#字典中無“性別”鍵則返回空值Nonedct.get('性別','男')

#字典中無"性別"鍵,默認返回"男"Out:'男'3.3字典(5)獲得字典對象中鍵對應的值,并刪除該元素dct={'學號':'001','姓名':'zhangsan','年齡':19}#返回字典中鍵為“年齡”的值,并刪除該元素x=dct.pop('年齡') xOut:19dctOut:{'學號':'001','姓名':'zhangsan'}(6)獲得字典對象中所有鍵dct={'學號':'001','姓名':'zhangsan','年齡':19}dct.keys() #獲取字典中所有的鍵Out:dict_keys(['學號','姓名','年齡'])forkeyindct:#默認遍歷所有的鍵print(key)3.3字典(7)獲得字典對象中所有值dct={'學號':'001','姓名':'zhangsan','年齡':19}dct.values() #獲取字典中所有的值Out:dict_values(['001','zhangsan',19])(8)獲得字典對象中所有鍵值對dct={'學號':'001','姓名':'zhangsan','年齡':19}dct.items() #獲取字典中所有的鍵值對Out:dict_items([('學號','001'),('姓名','zhangsan'),('年齡',19)])#遍歷字典fork,vindct.items():print(k,v)3.3字典(9)利用其它字典數(shù)據(jù)更新字典dct中元素dct={'學號':'001','姓名':'zhangsan','年齡':19}d={'學號':'002','年齡':20,

'性別':'女'}#根據(jù)字典d中數(shù)據(jù)修改字典dctdct.update(d) dctOut:{'學號':'002','姓名':'zhangsan','年齡':20

,'性別':'女'}3.3字典s='Pythonisaneasytolearn,powerfulprogramminglanguage.Ithasefficienthigh-leveldatastructuresandasimplebuteffectiveapproachtoobject-orientedprogramming.'dct={}#統(tǒng)計結(jié)果類似{'p':7,'y':2,...}forcins.lower():#字符c初始次數(shù)為0,逐次累加dct[c]=dct.get(c,0)+1#此處不能寫為dct[c]=dct[c]+1print(dct)#輸出統(tǒng)計結(jié)果#排序:items()得到鍵值對元組,x[1]是次數(shù),從大到小排lst=sorted(dct.items(),key=lambdax:x[1],reverse=True)print(lst)#輸出有序的統(tǒng)計列表,lambda見第5章編程:練習字典應用,統(tǒng)計下面一句英文中每個字母的出現(xiàn)次數(shù)。3.4集合set集合是由0個或多個元素構(gòu)成的無序數(shù)據(jù)集,集合中的元素不允許重復,可利用集合快速自動去重。集合是可變數(shù)據(jù),可以向集合中添加或刪除元素集合是無序的(無索引序號的概念),不支持索引操作。3.4.1創(chuàng)建集合集合可用標記“{}”創(chuàng)建,各元素用逗號分開。創(chuàng)建格式為:{元素1,元素2,…}或

set(可迭代對象)s={1,3,4}#s={1,1,3,3,3,4}將自動去重type(s)Out:set3.4集合set【例】創(chuàng)建集合set() #創(chuàng)建空集合,d={}將創(chuàng)建空字典Out:set()s={'C++','Java','Python'} #創(chuàng)建3個元素的集合Out:{'Java','C++','Python'}

set((1,1,2,3,3,3)) #創(chuàng)建集合時會自動去重Out:{1,2,3}創(chuàng)建空集合只能用set()函數(shù),不能用{},

{}創(chuàng)建的是空字典。3.4集合set3.4.2遍歷集合只能通過迭代來遍歷集合中所有元素,不能用索引訪問?!纠勘闅v集合ss={'C++','Java','Python'}

forxins:print(x)Out:#輸出順序可能和創(chuàng)建時的順序不一致,集合是無序的C++PythonJava3.4集合set3.4.3集合對象s的操作函數(shù)函數(shù)名說明s.add(x)若集合中不存在元素x則添加s.clear

()清除所有元素s.copy()復制整個集合len(s)返回集合s的元素個數(shù)s.pop()隨機返回集合中一個元素,并刪除該元素s.remove(x)如存在x則刪除,如不存在則報錯s.discard(x)如存在x則刪除,如不存在也不報錯s.update(s2)將另一個集合s2的元素添加到s中3.4集合set【例】集合的常用函數(shù)(1)向集合中添加元素s={'C++','Java','Python'}s.add('PHP')sOut:{'PHP','Java','C++','Python'}(2)刪除集合中元素s={'C++','Java','Python'}s.remove('Java')#刪除元素,不存在該元素將報錯sOut:{'C++','Python'}s.discard('Java') #刪除元素,不存在也不報錯3.4集合set(3)清空集合s={'C++','Java','Python'}s.clear() (4)復制集合s={'C++','Java','Python'}x=s.copy()x==sOut:True(5)將集合t中元素添加進來s={'C++','Java','Python'}t={'PHP','C++'}s.update(t) #將集合t的新數(shù)據(jù)添加到ssOut:{'PHP','C++','Java','Python'}3.4集合set(6)隨機返回集合中一個元素s={'C++','Java','Python'}#隨機返回一個元素,并在集合中刪除該元素x=s.pop()xOut:'Java'sOut:{'C++','Python'}(7)獲取集合元素個數(shù)s={'C++','Java','Python'}len(s)Out:33.4集合set3.4.4集合運算:并、交、差運算符說明S&T交集。返回一個在兩個集合S和T中都存在的元素構(gòu)成的新集合S|T并集。返回一個包含了兩個集合S和T所有元素的新集合S-T差集。返回一個在集合S存在,但在集合T不存在的元素的新集合S^T對稱差集。返回僅存于一個集合,沒有同時存在于兩個集合的元素S==T如果集合S和集合T中元素相同,返回True,否則返回FalseS!=T如果集合S和集合T中元素不相同,返回True,否則返回FalseS<=T子集測試。如果集合S是集合T的子集,則返回True,否則返回FalseS<T真子集測試。如果集合S是集合T的真子集,則返回True,否則返回FalseS>=T超集測試。如果集合S是集合T的超集,則返回True,否則返回FalseS>T真超集測試。如果集合S是集合T的真超集,則返回True,否則返回False3.4集合set【例】常見的集合運算符s={10,20,30}t={20,30,40}s&t #交集Out:{20,30}s|t #并集Out:{20,40,10,30}s-t #差集Out:{10}s^t #對稱差集Out:{40,10}3.4集合set【例】常見的集合運算符{1,2,3}=={2,3,1} #判斷元素是否相同Out:Trues={10,20,30}t={10,20}s!=t #判斷元素不相同Out:Trues>t #真超集測試Out:Trues<

溫馨提示

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

最新文檔

評論

0/150

提交評論