《Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)》課件-Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)(第3章 序列結(jié)構(gòu))_第1頁
《Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)》課件-Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)(第3章 序列結(jié)構(gòu))_第2頁
《Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)》課件-Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)(第3章 序列結(jié)構(gòu))_第3頁
《Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)》課件-Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)(第3章 序列結(jié)構(gòu))_第4頁
《Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)》課件-Python大數(shù)據(jù)基礎(chǔ)與實戰(zhàn)(第3章 序列結(jié)構(gòu))_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章序列結(jié)構(gòu)3.5集合3.4字典3.2列表3.6封裝與拆封3.3元組3.1序列概述3.1序列概述3.1序列概述

序列(sequence)是一種用來存放多個值的數(shù)據(jù)類型,序列中對象類型可以相同也可以不同。

序列中的每個元素可以通過索引來進行訪問(集合類型除外)。序列按照其中的元素是否可變分為可變序列和不可變序列,按照元素是否有序分為有序序列和無序序列。3.2列表

列表是Python內(nèi)置的有序、可變序列,列表的所有元素放在一對中括號“[]”中,并使用逗號分隔開。當列表元素增加或刪除時,列表對象自動進行擴展或收縮內(nèi)存,保證元素之間沒有縫隙。在Python中,一個列表中的數(shù)據(jù)類型可以各不相同,可以同時為整數(shù)、實數(shù)、字符串等基本類型,甚至是列表、元組、字典、集合以及其他自定義類型的對象。Python中列表存放的元素是值的引用,并不直接存儲值,列表類似于其它語言的數(shù)組。需要注意的是,列表的功能雖然非常強大,但是負擔(dān)也比較重,開銷較大,要盡量避免過多使用列表。

1.列表的創(chuàng)建和刪除將列表元素放置在一對方括號[]內(nèi),以逗號分隔,將這個列表賦值給變量,即可創(chuàng)建列表。也可以使用list()函數(shù)將元組、range對象、字符串或其他類型的可迭代對象類型的數(shù)據(jù)轉(zhuǎn)換為列表。當列表不再使用時,使用del命令刪除整個列表。>>>c=["123",a,b]>>>d=list("abc")>>>list(range(1,10,2))>>>delc3.2列表3.2列表2.

列表的賦值和拷貝1)

淺拷貝淺拷貝會創(chuàng)建新對象,其內(nèi)容是原對象的引用。切片操作返回的是列表元素的淺拷貝,也就是生成一個新的列表,并且把原列表中所有元素的引用都復(fù)制到新列表中。如果原列表中只包含整數(shù)、實數(shù)、復(fù)數(shù)等基本類型或元組、字符串這樣的不可變類型的數(shù)據(jù),一般是沒有問題的(不會影響)。如果原列表中包含列表之類的可變數(shù)據(jù)類型,由于淺拷貝時只是把子列表的引用復(fù)制到新列表中,這樣的話修改任何一個都會影響另外一個。3.2列表>>>a=[1,2,3,"welcome",["C","Java","PHP"]]>>>b=a.copy() #淺拷貝a>>>aisb #a、b指向不同的對象引用,內(nèi)存地址不相同F(xiàn)alse>>>a[3]="hello">>>b[1,2,3,'welcome',['C','Java','PHP']]>>>a[4].append("Python") >>>b[1,2,3,'welcome',['C','Java','PHP','Python']]3.2列表2)深拷貝深拷貝拷貝兩層。原始對象的改變不會造成深拷貝里任何子元素的改變,使用copy模塊中的deepcopy()函數(shù)。>>>importcopy >>>a=[1,2,3,"welcome",["C","Java","PHP"]]>>>b=copy.deepcopy(a) >>>aisbFalse>>>a[4].append("Python")>>>b[1,2,3,'welcome',['C','Java','PHP']]

3.2列表3)直接賦值在python中,對象賦值實際上是拷貝對象的引用。當創(chuàng)建一個對象,然后把它賦給另一個變量的時候,python并沒有拷貝這個對象,而只是拷貝了這個對象的引用。如果原始列表改變,被賦值的對象也會做相同的改變。>>>a=[1,2,"hello",["welcome","world"]]>>>b=a #變量b復(fù)制a的對象引用>>>a[2]="xi'an" #修改列表內(nèi)容>>>b[1,2,"xi'an",['welcome','world']] #修改列表內(nèi)容3.2列表3.

列表的常用操作1)轉(zhuǎn)換其它數(shù)據(jù)類型到列表使用list()函數(shù)可以完成對可迭代對象的列表轉(zhuǎn)換,字符串對象可以通過split()完成到列表的轉(zhuǎn)換。>>>list("cat") ['c','a','t']>>>birthday='07/28/1974' >>>birthday.split("/") #轉(zhuǎn)化字符串到列表['07','28','1974']3.2

列表2)列表元素的訪問與計數(shù)列表元素的訪問采用lst[offset]方式,offset可以是正整數(shù),也可以是負整數(shù)。

當offset為正整數(shù)時,表示從列表頭開始計數(shù),0≤offset≤len(lst)-1。當offset為負整數(shù)時,表示從列表末尾開始計數(shù),len(lst)≤offset≤-1。當列表元素是序列時,可以采用二級下標方式lst[offset1][offset2]。

>>>a=[1,2,3,4,5,6,"abcd"]>>>a[0]1>>>a[-7]=10[10,2,3,4,5,6,'abcd']>>>a[6][0]'a'使用列表對象的index()方法獲取指定元素首次出現(xiàn)的下標,若列表對象中不存在指定元素,則拋出異常。>>>aList[3,4,5,5.5,7,9,11,13,15,17]>>>aList.index(7)43.2

列表3)列表元素的增加列表元素的添加可以使用append()、extend()和insert(),或者使用“+”運算符。除了“+”運算符外,其它幾個方法都屬于原地操作。

append()方法通過append()方法在當前列表尾部追加元素,是原地修改列表,速度較快。extend()方法使用列表對象的extend()方法可以將另一個迭代對象的所有元素添加至該列表對象尾部。通過extend()方法來增加列表元素也不改變其內(nèi)存首地址,屬于原地操作。3.2

列表3.2

列表>>>aList=[3,4,5,6]>>>aList.append(7)>>>aList[3,4,5,6,7]>>>aList=[1,2,3,4]>>>aList.extend([5,6])>>>aList[1,2,3,4,5,6]

insert()方法使用列表對象的insert(index,x)方法可以將元素添加至列表的指定位置。列表的insert()方法可以在列表的任意位置插入元素,但由于列表的自動內(nèi)存管理功能,insert()方法會引起插入位置之后所有元素的移動,這會影響處理速度。>>>aList.insert(3,6) #在下標為3的位置插入元素6>>>aList[1,2,3,6,4,5,6]3.2

列表3.2

列表使用“+”運算符如果是通過“+”運算符來增加列表元素,實際上是創(chuàng)建了一個新列表,并將原列表中的元素和新元素依次復(fù)制到新列表的內(nèi)存空間。由于涉及大量元素的復(fù)制,該操作速度較慢,在涉及大量元素添加時不建議使用該方法。>>>aList=[1,2,3]>>>aList=aList+[4,5]>>>aList[1,2,3,4,5]使用“*”運算符使用乘法*來擴展列表對象,將列表與整數(shù)相乘,生成一個新列表,新列表是原列表中元素的重復(fù)。當使用*運算符將包含列表的列表重復(fù)并創(chuàng)建新列表時,當修改其中一個值時,相應(yīng)的引用也會被修改。>>>bList=[[1,2,3]]*3>>>bList[0][0]=4>>>bList[[4,2,3],[4,2,3],[4,2,3]]3.2

列表4)列表元素的刪除使用del命令、使用列表對象的pop()方法、使用列表對象的remove()方法。使用列表的pop()方法刪除并返回指定位置(默認為最后一個)上的元素,如果給定的下標超出了列表的范圍則拋出異常。使用列表對象的remove()方法刪除首次出現(xiàn)的指定元素,如果列表中不存在要刪除的元素,則拋出異常。3.2

列表

思考:

運行下面的程序,可以發(fā)現(xiàn)當循環(huán)結(jié)束后卻發(fā)現(xiàn)并沒有把所有的“1”都刪除,只是刪除了一部分。為什么會發(fā)生這種現(xiàn)象?>>>x=[1,2,1,2,1,1,1]>>>foriinx: ifi==1: x.remove(i)>>>x[2,2,1]3.2

列表

原因在于列表的自動內(nèi)存管理功能。當刪除列表元素時,Python會自動對列表內(nèi)存進行收縮并移動列表元素,以保證所有元素之間沒有空隙,增加列表元素時也會自動擴展內(nèi)存并對元素進行移動以保證元素之間沒有空隙。每當插入或刪除一個元素之后,該元素位置后面所有元素的索引就都改變了。

3.2

列表>>>x=[1,2,1,1,1]>>>count=1>>>foriinx:

print("-----before-----\n",x)

print("position:%d\telement:%d"%(count,i)) ifi==1:

x.remove(i) print("----after----\n",x) count+=1-----before-----[1,2,1,1,1]position:1 element:1----after----[2,1,1,1]-----before-----[2,1,1,1]position:2 element:1----after----[2,1,1]-----before-----[2,1,1]position:3 element:1----after----[2,1]

如何解決呢?可以改變刪除元素的方向,從后向前刪除,當列表收縮時右側(cè)元素的移位就不會造成元素索引位置變化導(dǎo)致的錯誤。>>>x=[1,2,1,2,1,1,1]>>>foriinrange(len(x)-1,-1,-1):#從后往前刪,下標范圍[6,-1) ifx[i]==1: delx[i]>>>x[2,2]3.2

列表也可以使用切片來完成>>>x=[1,2,1,2,1,1,1]>>>foriinx[::]:

#使用切片

ifi==1:

x.remove(i)

5)列表元素的排序和反轉(zhuǎn)實際中,經(jīng)常需要對列表的元素進行排序,可以使用sort()和sorted()。列表對象的sort()方法用于按照指定的規(guī)則對列表中所有元素進行原地排序,該操作會改變原來列表元素的順序。

sorted()排序后會生成新列表,原列表不會改變。

reverse()方法用于將列表所有元素逆序或翻轉(zhuǎn)。>>>a[15,8,14,16,10,19,13,18,11,17,12,9] >>>b=sorted(a) #產(chǎn)生新列表存放排序結(jié)果3.2

列表>>>a.sort(key=str) #原地排序,指定排序依據(jù)根據(jù)字符串大小>>>a[10,11,12,13,14,15,16,17,18,19,8,9]>>>a.reverse() #反轉(zhuǎn)列表,原地操作>>>a[9,8,19,18,17,16,15,14,13,12,11,10]3.2

列表6)列表切片操作使用語法“l(fā)ist_name[start:end:step]”來返回列表list_name的一個片段。第一個數(shù)字start表示切片開始位置,默認為0;第二個數(shù)字end表示切片截止(但不包含)位置,默認為列表長度;第三個數(shù)字step表示切片的步長,默認為1。當start為0時可以省略,當end為列表長度時可以省略,當step為1時可以省略,省略步長時還可以同時省略最后一個冒號。當step為負整數(shù)時,表示反向切片,這時start位置應(yīng)該在end位置的右側(cè),否則會返回空列表,start默認為-1,end默認為列表第1個元素前面的位置。-1表示列表最后一個元素的位置,其它以此類推。3.2

列表3.2

列表使用切片獲取列表的部分元素使用切片可以返回列表中部分元素組成的新列表。切片操作不會因為下標越界而拋出異常,而是簡單地在列表尾部截斷或者返回一個空列表,代碼具有更強的健壯性。使用切片為列表增加/刪除元素可以使用切片操作在列表任意位置插入新元素,但是并不影響列表對象的內(nèi)存地址,屬于原地操作。3.2

列表>>>numbers=[1,2,3,4,5,6,7,8]>>>a=numbers[::]#返回包含原列表中所有元素的新列表[1,2,3,4,5,6,7,8]>>>numbers[::2] #從第1個元素開始,隔1個取元素[1,3,5,7]>>>numbers[::-1] #反向切片[8,7,6,5,4,3,2,1]>>>numbers[1:3] #指定切片開始位置和結(jié)束位置,步長默認為1[2,3]>>>numbers[1::2] #指定切片開始位置和步長,省略結(jié)束位置[2,4,6,8]3.2

列表>>>num=[1,2,3,4,5]>>>num[len(num):]=[6,7,8]>>>num[1,2,3,4,5,6,7,8]>>>num[:0]=[-2,-1]>>>num[-2,-1,1,2,3,4,5,6,7,8]>>>aList=[3,5,7,9]>>>aList[:3]=[]#刪除列表中前3個元素>>>aList[9]切片返回的是列表元素的淺拷貝>>>x=[3,4,[5,6]]>>>y=x[:]>>>id(y)==id(x)False>>>z=x>>>xiszTrue3.2

列表7)列表推導(dǎo)式列表推導(dǎo)式使用非常簡潔的方式來快速生成滿足特定需求的列表,代碼具有非常強的可讀性。列表推導(dǎo)式語法形式為:[expressionforexpr1insequence1ifcondition1forexpr2insequence2ifcondition2forexpr3insequence3ifcondition3...forexprNinsequenceNifconditionN]列表推導(dǎo)式在邏輯上等價于一個循環(huán)語句,只是形式上更加簡潔。3.2

列表>>>num=[a*aforainrange(10)ifa!=5]>>>num[0,1,4,9,16,36,49,64,81]>>>nation=['China','France','England']>>>aList=[s.strip()forsinnation]>>>aList['China','France','England']>>>a=[1,2,3]>>>b=[4,5,6]>>>c=[x*yforxinaforyinb]#注意嵌套關(guān)系,第2個循環(huán)作為第1個循環(huán)的循環(huán)語句>>>c[4,5,6,8,10,12,12,15,18]3.2

列表>>>vec=[[1,2,3],[4,5,6],[7,8,9]]>>>[numforeleminvecfornuminelem][1,2,3,4,5,6,7,8,9]等價于:>>>result=[]>>>foreleminvec: fornuminelem: result.append(num)3.2

列表在列表推導(dǎo)式中使用多個循環(huán),實現(xiàn)多序列元素的任意組合,并且可以結(jié)合條件語句過濾特定元素>>>[(x,y)forxinrange(3)foryinrange(3)][(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]>>>[(x,y)forxin[1,2,3]foryin[3,1,4]ifx!=y][(1,3),(1,4),(2,3),(2,1),(2,4),(3,1),(3,4)]使用列表推導(dǎo)式實現(xiàn)矩陣轉(zhuǎn)置>>>matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]] #3*4矩陣

--->4*3矩陣

>>>[[row[i]forrowinmatrix]foriin

range(4)][v**2ifv%2==0elsev+1forvin[2,3,4,-1]ifv>0][4,4,16]>>>x=list(range(10))>>>x[0,1,2,3,4,5,6,7,8,9]>>>[item>5foriteminx][False,False,False,False,False,False,True,True,True,True]>>>[pforpinrange(2,100)if0notin[p%dfordinrange(2,int(p**0.5)+1)]][2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]8)列表成員測試使用in/notin運算符可以判斷一個元素是否在列表中。>>>aList=[1,2,3]>>>a=2>>>ainaListTrue>>>4notinaListTrue3.2

列表9)列表的比較關(guān)系運算符(<、>、==、!=、<=、>=)也可以用來對列表進行比較。>>>list1=[1,2,3]>>>list2=[2,5,6]>>>list1>list2False>>>list1<list2True10)

多個列表的迭代使用zip()函數(shù)可以完成對多個列表的迭代。>>>days=['Monday','Tuesday','Wednesday']>>>courses=['math','english','computer','science']>>>forday,courseinzip(days,courses): #當最短的列表迭代完時,zip()將停止 print(day,":study",course)Monday:studymathTuesday:studyenglishWednesday:studycomputer3.3元組3.3

元組

列表的功能雖然很強大,但負擔(dān)也很重,在很大程度上影響了運行效率。有時候我們并不需要那么多功能,很希望能有個輕量級的列表,元組(tuple)正是這樣一種類型。列表和元組都屬于有序序列,都支持使用雙向索引訪問其中的元素。元組屬于不可變(immutable)序列,不可以直接修改元組中元素的值,也無法為元組增加或刪除元素。元組沒有提供append()、extend()和insert()等方法,無法向元組中添加元素;同樣,元組也沒有remove()和pop()方法,也不支持對元組元素進行del操作,不能從元組中刪除元素,而只能使用del命令刪除整個元組。

元組也支持切片操作,但是只能通過切片來訪問元組中的元素,而不允許使用切片來修改元組中元素的值,也不支持使用切片操作來為元組增加或刪除元素。Python內(nèi)部實現(xiàn)對元組做了大量優(yōu)化,訪問速度比列表更快。如果定義了一系列常量值,主要用途僅是對它們進行遍歷或其他類似用途,而不需要對其元素進行任何修改,那么一般建議使用元組而不用列表。3.3

元組3.3

元組1.

元組的創(chuàng)建和刪除將元組元素放置在一對方括號()內(nèi),以逗號分隔,將這個元組賦值給變量,即可創(chuàng)建元組。也可以使用tuple()函數(shù)將元組、range對象、字符串或其他類型的可迭代對象類型的數(shù)據(jù)轉(zhuǎn)換為列表。當不再使用時,使用del命令刪除整個列表。

>>>t1=(1,2,3) #直接把元組賦值給一個變量>>>t[1]=10 #元組是不可改變Traceback(mostrecentcalllast):TypeError:'tuple'objectdoesnotsupportitemassignment>>>t2=(4) #和t2=4是一樣的>>>t3=(4,) #元組中只有一個元素,必須在后面多寫一個逗號>>>t4=tuple(range(5)) #將其他迭代對象轉(zhuǎn)換為元組>>>t5=() #空元組>>>color_tuple='Red','Green','Blue'

#多個元素時,可以省略()>>>color_tuple('Red','Green','Blue')>>>delt4

#只能刪除整個元組>>>delt4[1]

#不能刪除元組元素3.3

元組2.元組的基本操作元組也是序列,因此一些用于列表的基本操作也可以用在元組上??梢允褂孟聵嗽L問元組的元素,支持兩個方法count()和index(),提供in和notin運算符來判斷元素是否在元組中,提供對元組進行切片等等。>>>t=(1,2,3)>>>tt=tuple(range(4,7))>>>print("Thesecondelementintis%d"%t[1])Thesecondelementintis23.3

元組>>>ttt=t+tt #元組連接>>>ttt(1,2,3,4,5,6)>>>tttt=ttt[1:7] #元組切片>>>tttt(2,3,4,5,6)>>>tttt.count(2) #計算指定元素出現(xiàn)的次數(shù)1>>>tttt.index(5) #計算指定元素第1次出現(xiàn)的下標3>>>(1,2,3)*3 #元組可以數(shù)乘(1,2,3,1,2,3,1,2,3)3.3

元組3.3

元組3.生成器推導(dǎo)式在形式上生成器推導(dǎo)式使用圓括號作為定界符。與列表推導(dǎo)式最大的不同是,生成器推導(dǎo)式的結(jié)果是一個生成器對象。生成器對象類似于迭代器對象,具有惰性求值的特點,只在需要時生成新元素,比列表推導(dǎo)式具有更高的效率,空間占用非常少,尤其適合大數(shù)據(jù)處理的場合。使用生成器對象的元素時,可以根據(jù)需要將其轉(zhuǎn)化為列表或元組,也可以使用生成器對象的__next__()方法或者內(nèi)置函數(shù)next()進行遍歷,或者直接使用for循環(huán)來遍歷其中的元素。但是不管用哪種方法訪問其元素,只能從前往后訪問每個元素,不可以再次訪問已訪問過的元素,也不支持使用下標訪問其中的元素。當所有元素訪問結(jié)束以后,如果需要重新訪問其中的元素,必須重新創(chuàng)建該生成器對象,enumerate、filter、map、zip等其他迭代器對象也具有同樣的特點。3.3

元組>>>gg=((i+2)**2foriinrange(10)) #創(chuàng)建生成器對象>>>gg #生成器對象<generatorobject<genexpr>at0x0000000002B7B9A8>>>>list(gg) #將生成器對象轉(zhuǎn)換為列表[4,9,16,25,36,49,64,81,100,121]>>>tuple(gg) #生成器對象已遍歷結(jié)束,沒有元素了()>>>g=((i+2)**2foriinrange(10)) #重新創(chuàng)建生成器對象>>>g.__next__() #使用生成器對象的__next__()方法獲取元素43.3

元組3.4字典3.4字典

字典(又被稱為關(guān)聯(lián)數(shù)組)是包含若干“鍵:值”元素的無序可變序列,字典中的每個元素包含用冒號分隔開的“鍵”和“值”兩部分,表示一種映射或?qū)?yīng)關(guān)系。定義字典時,所有的元素放在一對大括號“{}”中。字典中元素的“鍵”可以是Python中任意不可變數(shù)據(jù),例如整數(shù)、實數(shù)、復(fù)數(shù)、字符串、元組等可哈希數(shù)據(jù),但不能使用列表、集合、字典或其他可變類型作為字典的“鍵”。另外,字典中的“鍵”不允許重復(fù),而“值”是可以重復(fù)的。1.

字典的創(chuàng)建和刪除使用賦值運算符“=”將一個字典賦值給一個變量,即可創(chuàng)建一個字典變量>>>empty_dict={} #定義一個空字典>>>bierce={ #定義一個非空字典 "day":"Aperiodoftwenty-fourhours", "positive":"Mistakenatthetopofone'svoice", "misfortune":"Thekindoffortunethatnevermisses" }3.4字典使用內(nèi)置類dict以不同形式創(chuàng)建字典>>>lot=[(1,'a'),(2,'b'),(3,'c')] #定義一個列表>>>dict(lot) #使用dict類轉(zhuǎn)換列表到字典{1:'a',2:'b',3:'c'}>>>keys=['a','b','c','d']>>>values=[1,2,3,4]>>>dic=dict(zip(keys,values)) #根據(jù)已有數(shù)據(jù)創(chuàng)建字典>>>color_dict=dict(name='red',value=0xff0000)#以關(guān)鍵參數(shù)的形式創(chuàng)建3.4字典3.4字典2.字典的賦值和拷貝使用賦值符“=”時,任何對原字典的修改,都會影響到指向它的新字典。使用copy()方法時,會產(chǎn)生一個新的字典,因此對原字典的修改,不會影響到新字典。>>>dic1={"green":"go","yellow":"goslowly","red":"stop"}>>>dic2=dic1>>>dic1["blue"]="gofast">>>dic2{'green':'go','yellow':'goslowly','red':'stop','blue':'gofast'}3.4字典3.字典的基本操作1)字典元素的訪問使用“鍵”作為下標就可以訪問對應(yīng)的“值”,如果字典中不存在這個“鍵”會拋出異常。還可以通過get()方法返回指定“鍵”對應(yīng)的“值”,并且允許指定該鍵不存在時返回特定的“值”。使用keys()方法得到所有的“鍵”,使用values()方法得到所有的“值”,使用item()方法得到所有的“鍵”和“值”>>>aDict={'年齡':19,'成績':[85,90,68,72],'姓名':'王寧','sex':'男'}>>>aDict["年齡"] #訪問“鍵”對應(yīng)的“值”19>>>aDict.get('name','NotExists.') 'NotExists.'>>>aDict={'年齡':19,'成績':[85,90,68,72],'姓名':'王寧','sex':'男'} >>>aDict.keys() #訪問所有“鍵”dict_keys(['年齡','成績','姓名','sex'])>>>aDict.values() #訪問所有“值”dict_values([19,[85,90,68,72],'王寧','男'])>>>aDict.items() #返回整個字典內(nèi)容dict_items([('年齡',19),('成績',[85,90,68,72]),('姓名','王寧'),('sex','男')])3.4字典2)字典元素的添加使用字典的update()方法來添加元素,還可以使用“鍵”的方式來增加元素。>>>aDict={'年齡':19,'成績':[85,90,68,72],'姓名':'王寧','sex':'男'}>>>aDict['年齡']=20>>>aDict['地址']="西安市長安區(qū)西京路1號" #使用鍵的方式添加元素>>>aDict.update({"電話":})#使用update()方法來增加元素>>>aDict{'年齡':20,'成績':[85,90,68,72],'姓名':'王寧','sex':'男','地址':'西安市長安區(qū)西京路1號','電話':}3.4字典3)字典元素的修改有兩種方法,可以通過“鍵”的方式來賦值,或者使用update()方法。>>>aDict.update({"成績":[80,90,68,72]})>>>aDict["成績"]=[60,70,80,90]>>>aDict{'年齡':20,'成績':[60,70,80,90],'姓名':'王寧','sex':'男','地址':'西安市長安區(qū)西京路1號','電話':}3.4字典4)字典元素的刪除刪除字典元素可以使用del命令、使用字典對象的pop()和popitem()方法等方式。如果要刪除字典所有元素使用clear()方法。>>>delaDict["成績"]>>>aDict.pop("sex") #彈出指定鍵對應(yīng)的元素'男'>>>aDict.popitem() #彈出一個元素,對空字典會拋出異常('電話',)>>>aDict.clear()3.4字典5)字典元素的排序字段可以按照“鍵”或者“值”來進行排序。>>>a={"a":10,"c":1,"b":100}#items()將字典的元素轉(zhuǎn)換成了包含元組的可迭代對象,取元組中的第二個元素進行比較>>>sorted(a.items(),key=lambdaitem:item[1]) #按照“值”排序[('c',1),('a',10),('b',100)]3.4字典3.5集合3.5集合

集合(set)屬于Python無序可變序列,使用一對大括號“{}”作為定界符,元素之間使用逗號分隔,同一個集合內(nèi)的每個元素都是唯一的,元素之間不允許重復(fù)。集合中只能包含數(shù)字、字

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論