版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第5章組合數(shù)據(jù)類型《Python快速編程入門(第3版))》學(xué)習(xí)目標/Target了解組合數(shù)據(jù)類型,能夠說出序列類型、集合類型和映射類型各自的特點掌握列表推導(dǎo)式,能夠通過列表推導(dǎo)式創(chuàng)建列表掌握元組的操作,能夠獨立創(chuàng)建元組并訪問元組的元素掌握列表的操作,能夠創(chuàng)建列表并訪問、添加、重新排列、刪除列表的元素學(xué)習(xí)目標/Target熟悉集合的操作,能夠熟練地創(chuàng)建集合并操作集合的元素掌握字典推導(dǎo)式,能夠通過字典推導(dǎo)式創(chuàng)建字典掌握運算符在組合數(shù)據(jù)類型中的應(yīng)用,能夠通過+、*、in、notin這幾個運
算符對組合數(shù)據(jù)類型進行操作掌握字典的操作,能夠獨立創(chuàng)建字典并操作字典的元素章節(jié)概述/Summary程序中有時不僅要處理數(shù)字、字符串這些基礎(chǔ)類型的數(shù)據(jù),還需要處理一些混合數(shù)據(jù)。為此,Python定義了可以表示和記錄混合數(shù)據(jù)的組合數(shù)據(jù)類型。使用組合數(shù)據(jù)類型表示和記錄數(shù)據(jù),不僅能使數(shù)據(jù)表示得更為清晰,也能極大簡化程序員的開發(fā)工作,提高開發(fā)效率。本章將對Python中的組合數(shù)據(jù)類型進行詳細講解。目錄/Contents010203認識組合數(shù)據(jù)類型列表元組04實訓(xùn)案例05集合目錄/Contents060708字典實訓(xùn)案例組合數(shù)據(jù)類型使用運算符認識組合數(shù)據(jù)類型5.1
先定一個小目標!了解組合數(shù)據(jù)類型,能夠說出序列類型、集合類型和映射類型各自的特點5.1認識組合數(shù)據(jù)類型組合數(shù)據(jù)類型可將多個相同類型或不同類型的數(shù)據(jù)組織為一個整體。根據(jù)數(shù)據(jù)組織方式的不同,Python的組合數(shù)據(jù)類型可分成3類,分別是序列類型、集合類型和映射類型。5.1認識組合數(shù)據(jù)類型1.序列類型序列類型來源于數(shù)學(xué)概念中的數(shù)列。數(shù)列是按一定順序排成一列的一組數(shù),每個數(shù)稱為這個數(shù)列的項,每項不是在其他項之前,就是在其他項之后。存儲n項元素的數(shù)列{an}的定義如下:{an}=a0,a1,a2,?,an-15.1認識組合數(shù)據(jù)類型需要注意的是,數(shù)列的索引從0開始依次遞增的。通過索引i可以訪問數(shù)列中的第i+1項元素。例如通過索引1可以獲取數(shù)列{an}中的第2項元素a1。序列類型在數(shù)列的基礎(chǔ)上進行了擴展,Python中的序列支持正向索引和反向索引,如圖所示。5.1認識組合數(shù)據(jù)類型正向索引從左向右依次遞增,左數(shù)第1個元素的索引為0,第2個元素的索引為1,以此類推;反向索引從右向左依次遞減,從右數(shù)第1個元素的索引為-1,第2個元素的索引為-2,以此類推。這種雙向索引可以方便用戶快速訪問序列中任意位置的元素,尤其是開頭位置和結(jié)尾位置的元素。5.1認識組合數(shù)據(jù)類型Python中常用的序列類型主要有3種:字符串(str)、列表(list)和元組(tuple),其中字符串和元組是不可變的序列類型,一旦創(chuàng)建以后其內(nèi)部的元素?zé)o法被修改,列表是可變的序列類型。5.1認識組合數(shù)據(jù)類型2.集合類型數(shù)學(xué)中的集合是指具有某種特定性質(zhì)的對象匯總而成的集體,其中組成集合的對象稱為該集合的元素。例如,成年人集合的每一個元素都是已滿18周歲的人。集合中的元素具有以下3個特征。確定性:給定一個集合,每個元素要么屬于該集合,要么不屬于該集合,不允許有模棱兩可的情況出現(xiàn)?;ギ愋裕杭现械脑乇仨毷俏ㄒ坏?,不允許重復(fù)。如果嘗試向集合中添加已經(jīng)存在的元素,則會自動忽略添加元素的操作,不對集合進行任何修改,也就是說既不會添加元素,也不會覆蓋已經(jīng)存在的元素。無序性:集合中的元素沒有順序,若多個集合中的元素僅順序不同,那么這些集合本質(zhì)上是同一集合。5.1認識組合數(shù)據(jù)類型Python中的集合類型與數(shù)學(xué)中的集合概念一致,也具備以上3個特性,它用于存儲一組元素,元素必須唯一,元素可以是無序的。另外,Python要求放入集合中的元素必須是不可變的數(shù)據(jù)類型,例如整型、浮點型、復(fù)數(shù)類型、布爾類型、字符串類型和元組類型,列表、字典及集合類型都屬于可變的數(shù)據(jù)類型,這些類型的數(shù)據(jù)都不能存放到集合中。5.1認識組合數(shù)據(jù)類型3.映射類型映射類型以鍵值對的形式存儲元素,鍵值對中的鍵與值之間存在映射關(guān)系。在數(shù)學(xué)中,設(shè)A、B是兩個非空集合,若按某個確定的對應(yīng)法則f,可使集合A中的任意一個元素x在集合B中都有唯一確定的對應(yīng)元素y,則稱f為從集合A到集合B的一個映射。5.1認識組合數(shù)據(jù)類型字典(dict)是Python唯一的映射類型,字典的鍵必須遵循以下兩個原則。(1)每個鍵只能對應(yīng)一個值,不允許重復(fù)出現(xiàn)。(2)字典中的鍵是不可變的數(shù)據(jù)類型。列表5.2
先定一個小目標!5.2.1創(chuàng)建列表掌握列表的操作,能夠通過[]或list()函數(shù)創(chuàng)建列表1.使用中括號“[]”創(chuàng)建列表使用中括號“[]”可以直接創(chuàng)建一個空列表,示例代碼如下:5.2.1創(chuàng)建列表list_one=[]#創(chuàng)建空列表,沒有任何元素在中括號中可以添加一個或多個元素,多個元素之間使用英文逗號分隔。列表的元素不僅可以為整型、浮點型等數(shù)字類型的數(shù)據(jù),而且可以是字符串、列表、元組、字典等組合數(shù)據(jù)類型的數(shù)據(jù),還可以是用戶自定義的數(shù)據(jù)類型。示例代碼如下:list_two=['p','y','t','h','o','n']
#列表中的元素類型均為字符串list_three=[1,'a','&',2.3]
#列表中的元素類型不同list_four=[1,'a','&',2.3,list_three]#列表中嵌套了另一個列表2.使用list()函數(shù)創(chuàng)建列表list()函數(shù)需要接收一個可迭代對象,并根據(jù)可迭代對象創(chuàng)建一個列表。如果該函數(shù)沒有接收任何可迭代對象,那么會創(chuàng)建一個空列表。示例代碼如下:5.2.1創(chuàng)建列表#創(chuàng)建空列表,結(jié)果為[]li_one=list()#根據(jù)字符串創(chuàng)建列表,結(jié)果為['p','y','t','h','o','n']li_two=list('python')#根據(jù)另一個列表創(chuàng)建列表,結(jié)果為[1,'python']li_three=list([1,'python'])支持通過for…in…語句迭代獲取其內(nèi)部元素的對象就是可迭代對象。我們已經(jīng)學(xué)習(xí)了字符串和列表這兩種數(shù)據(jù)類型,它們都是可迭代對象。同時,后續(xù)將會學(xué)習(xí)的集合、字典、文件類型的數(shù)據(jù)也是可迭代對象。若希望知道一個目標對象是否可迭代,則使用isinstance()函數(shù)可以判斷目標對象是否為可迭代對象,示例代碼如下:多學(xué)一招:可迭代對象#從collections.abc模塊中導(dǎo)入Iterable類fromcollections.abcimportIterablels=[3,4,5]print(isinstance(ls,Iterable))
先定一個小目標!5.2.2訪問列表元素掌握列表的操作,能夠訪問列表中的元素1.通過索引訪問列表元素索引就像圖書的目錄,閱讀時我們可以借助目錄快速定位到書籍的指定內(nèi)容。類似地,每個列表元素都有唯一的索引來標識其在列表中的位置,通過索引可以快速定位到列表中的元素,而無需遍歷整個列表。通過索引訪問列表元素的語法格式如下:list(n)使用格式5.2.2訪問列表元素5.2.2訪問列表元素Python中的序列類型支持雙向索引,其中正向索引從0開始,自左至右依次遞增;反向索引從-1開始,自右向左依次遞減。分別通過正向索引和反向索引訪問列表中的同一個元素,示例代碼如下:list_demo01=["Java","C#","Python","PHP"]print(list_demo01[1])#通過正向索引訪問列表元素print(list_demo01[-3])#通過反向索引訪問列表元素2.通過切片訪問列表元素切片是一種操作序列類型的方法,用于截取序列中的部分元素,從而得到一個新的子序列。通過切片操作序列類型的方式是相同的,下面以列表為例介紹如何通過切片訪問列表的元素。通過切片訪問列表元素的語法格式如下:list[m:n:step]使用格式5.2.2訪問列表元素以上語法格式表示按步長step獲取列表list中索引m~n-1對應(yīng)的元素,不包括索引n對應(yīng)的元素。步長step默認為1,索引m和n可以省略,若m省略,表示切片從列表首部開始;若n省略,表示切片到列表末尾結(jié)束。5.2.2訪問列表元素切片的使用示例代碼如下。li_one=['p','y','t','h','o','n']print(li_one[1:4:2]) #按步長2獲取li_one中索引1~3對應(yīng)的元素print(li_one[2:]) #獲取li_one中索引2到末尾對應(yīng)的元素print(li_one[:3]) #獲取li_one中索引0~2對應(yīng)的元素print(li_one[:]) #獲取li_one中的所有元素示例:切片的使用3.在循環(huán)中依次訪問列表元素列表是一個可迭代對象,這意味著用戶可以對列表進行迭代處理,逐個訪問列表中的元素。Python中使用for循環(huán)來遍歷列表中的元素,示例代碼如下:5.2.2訪問列表元素li_one=['p','y','t','h','o','n']forliinli_one:print(li,end='')
先定一個小目標!5.2.3添加列表元素掌握列表的操作,能夠向列表中添加元素1.append()方法append()方法用于在列表末尾添加一個新元素,該方法需要接收一個參數(shù),即要添加的新元素,元素的類型是任意的,可以是整型、字符串、列表、元組、字典等。append()方法會將參數(shù)作為整體添加到列表的末尾,而不會將其內(nèi)部的多個元素逐個添加,示例代碼如下:list_one=[1,2,3,4]list_one.append(5)
#在列表末尾添加元素5print(list_one)list_one.append(['論語','詩經(jīng)'])#繼續(xù)在列表末尾添加另一個列表print(list_one)5.2.3添加列表元素2.extend()方法extend()方法用于將另一個序列中的每個元素逐個添加到列表的末尾,實現(xiàn)對原列表的擴展。示例代碼如下:list_str=['a','b','c']list_num=[1,2,3]list_str.extend(list_num)#將list_num的所有元素添加到list_str的末尾print(list_num)print(list_str)5.2.3添加列表元素3.insert()方法insert()方法用于在列表中的指定位置插入一個新元素,被插入位置之后的元素會依次向后移動。如果新元素的類型是列表、元組、字典,則會將這些類型的數(shù)據(jù)視為一個整體插入到列表的指定位置。需要注意的是,如果指定位置超出了列表的長度,則insert()方法會將元素插入到列表的開頭或者結(jié)尾。示例代碼如下:names=['小明','小紅','小蘭']names.insert(2,'小白')#在列表names中索引為2的位置插入新元素'小白'names.insert(1,('張三','李四'))#在列表names中索引為1的位置插入新元素('張三','李四')names.insert(10,'王五')#在列表names的末尾插入新元素'王五'names.insert(-10,'王五')#在列表names的開頭插入新元素'王五'5.2.3添加列表元素
先定一個小目標!5.2.4列表元素排序掌握列表的操作,能夠?qū)α斜碇性剡M行排序1.sort()方法sort()方法用于按特定順序?qū)α斜碇械乃性剡M行排序,該方法的語法格式如下:5.2.4列表元素排序sort(key=None,reverse=False)語法格式key:用于指定排序規(guī)則,該參數(shù)的取值可以是列表支持的函數(shù)或者匿名函數(shù)。例如,key=len
表示按元素的長度進行排序。該參數(shù)的默認值為None,表示將按照元素的值進行排序。如果元素的類型是數(shù)字類型,則會按照數(shù)字的大小進行排序;如果元素的類型是字符串,則會按照字母順序進行排序。reverse:用于控制列表元素排序的方式,該參數(shù)可以取值True或者False,取值為True表示降序排列,取值為False(默認值)表示升序排列。使用sort()方法對列表元素排序后,排序后的元素會覆蓋列表原有的元素,不產(chǎn)生新列表,示例代碼如下:li_one=[6,2,5,3]li_two=[7,3,5,4]li_three=['python','java','php']li_one.sort()
#采用升序的方式對列表中的元素進行排序li_two.sort(reverse=True)
#采用降序的方式對列表中的元素進行排序li_three.sort(key=len)#按照元素的長度對列表中的字符串進行排序示例5.2.4列表元素排序2.sorted()函數(shù)sorted()函數(shù)用于按升序排列列表元素,該函數(shù)的返回值是升序排列后的新列表,排序操作不會對原列表產(chǎn)生影響。示例代碼如下:5.2.4列表元素排序li_one=[4,3,2,1]li_two=sorted(li_one)#采用升序方式對列表li_one進行排序print(li_one)print(li_two)3.reverse()方法reverse()方法用于逆置列表,即把原列表中的元素從右至左依次排列存放。示例代碼如下:5.2.4列表元素排序li_one=['a','b','c','d']li_one.reverse()print(li_one)
先定一個小目標!5.2.5刪除列表元素掌握列表的操作,能夠刪除列表中元素1.del語句del語句用于刪除列表中指定位置的元素,示例代碼如下:names=['小明','小紅','小蘭']delnames[0] #從列表中刪除索引為0的元素print(names)5.2.5刪除列表元素del語句也可以刪除整個列表,示例代碼如下:delnames#刪除列表names2.remove()方法remove()方法用于刪除列表中的某個元素,若列表中有多個匹配的元素,remove()只刪除匹配到的第一個元素,示例代碼如下:chars=['h','e','l','l','e']chars.remove('e')#刪除匹配到的第一個'e'print(chars)5.2.5刪除列表元素3.pop()方法pop()方法用于刪除列表中指定位置的元素,并返回被刪除的元素。若未指定具體元素,則刪除列表中的最后一個元素。注意,如果指定位置超出了列表的長度,則會示例代碼如下:numbers=[1,2,3,4,5]print(numbers.pop())
#刪除列表中的最后一個元素print(numbers.pop(1))#刪除列表中索引為1的元素print(numbers)5.2.5刪除列表元素4.clear()方法clear()方法用于清空列表中的所有元素,將列表變?yōu)榭樟斜?,示例代碼如下:names=[1,2,3]names.clear()#清空列表中的所有元素print(names)5.2.5刪除列表元素
先定一個小目標!5.2.6列表推導(dǎo)式掌握列表推導(dǎo)式,能夠通過列表推導(dǎo)式創(chuàng)建列表列表推導(dǎo)式是符合Python語法規(guī)則的復(fù)合表達式,用于以簡潔的方式根據(jù)已有的列表構(gòu)建滿足特定需求的列表。列表推導(dǎo)式的基本格式如下:[表達式for臨時變量in目標對象]語法格式以上格式由表達式及其后面for語句組成,其中for語句用于循環(huán)遍歷目標對象,并將每次遍歷到的元素賦給臨時變量,目標對象必須是一個可迭代對象,例如列表、字符串、元組等;表達式用于在每次循環(huán)中對臨時變量進行處理或者計算,它可以是任何有效的包含運算符的表達式,也可以是變量或者常量。5.2.6列表推導(dǎo)式當程序執(zhí)行列表推導(dǎo)式時,首先會創(chuàng)建一個空列表,然后執(zhí)行for循環(huán)遍歷目標對象的元素,在每次循環(huán)中將遍歷到的元素賦值給臨時變量,之后執(zhí)行表達式,將表達式處理或計算的結(jié)果添加到列表中,最后返回生成的新列表。5.2.6列表推導(dǎo)式使用列表推導(dǎo)式創(chuàng)建一個列表,該列表中的每個元素是另一個列表中每個元素的平方,示例代碼如下:ls=[1,2,3,4,5,6,7,8]ls=[data*datafordatainls]print(ls)示例5.2.6列表推導(dǎo)式1.帶有if語句的列表推導(dǎo)式在基本列表推導(dǎo)式的for語句之后添加一個if語句,就組成了帶if語句的列表推導(dǎo)式,其語法格式如下:5.2.6列表推導(dǎo)式[表達式for臨時變量in目標對象if判斷條件]語法格式以上列表推導(dǎo)式的執(zhí)行過程是,遍歷目標對象,將訪問到的元素賦給臨時變量,若臨時變量的值符合判斷條件,則按表達式對其進行處理或計算,并將處理或計算后的結(jié)果添加到新列表中。例如,通過帶if語句的列表推導(dǎo)式構(gòu)建一個新列表,新列表中只保留列表ls中大于4的元素,具體代碼如下:new_ls=[tempfortempinlsiftemp>4]print(new_ls)示例5.2.6列表推導(dǎo)式2.帶if-else語句的列表推導(dǎo)式在基本列表推導(dǎo)式的for語句之前添加一個if-else語句,就組成了帶if-else語句的列表推導(dǎo)式,其語法格式如下:5.2.6列表推導(dǎo)式[表達式1if判斷條件else表達式2for臨時變量in目標對象]語法格式以上列表推導(dǎo)式的執(zhí)行過程是,遍歷目標對象,將訪問到的元素賦給臨時變量,若臨時變量的值符合判斷條件,則按表達式1對其進行處理或計算,否則按表達式2對其進行處理或計算,并將處理或計算后的結(jié)果添加到新列表中。例如,通過帶if-else語句的列表推導(dǎo)式構(gòu)建一個新列表,新列表中保留列表ls中值為偶數(shù)的元素,以及值為奇數(shù)時加1的結(jié)果,具體代碼如下:new_ls=[tempiftemp%2==0elsetemp+1fortempinls]print(new_ls)示例5.2.6列表推導(dǎo)式3.帶for循環(huán)嵌套的列表推導(dǎo)式在基本列表推導(dǎo)式的for語句之后添加一個for語句,就組成了帶for循環(huán)嵌套的列表推導(dǎo)式,其語法格式如下:5.2.6列表推導(dǎo)式[表達式for臨時變量1in目標對象1for臨時變量2in目標對象2]語法格式以上格式中的for語句按從左至右的順序分別是外層循環(huán)和內(nèi)層循環(huán)。利用上述列表推導(dǎo)式可以根據(jù)兩個目標對象快速生成一個新的列表。例如,將列表ls_one和列表ls_two中元素的和作為列表ls_three的元素,示例代碼如下:ls_one=[1,2,3]ls_two=[3,4,5]ls_three=[x+yforxinls_oneforyinls_two]print(ls_three)示例5.2.6列表推導(dǎo)式元組5.3
先定一個小目標!5.3元組掌握元組的操作,能夠獨立創(chuàng)建元組并訪問元組的元素元組的表現(xiàn)形式為一組包含在圓括號“()”中、由逗號分隔的元素,元素的個數(shù)、類型不受限制。使用圓括號可以直接創(chuàng)建元組,示例代碼如下:t1=()
#創(chuàng)建空元組,結(jié)果為()t2=(1,) #創(chuàng)建包含單個元素的元組,結(jié)果為(1,)t3=(1,2,3) #創(chuàng)建包含多個元素的元組,結(jié)果為(1,2,3)t4=(1,'c',('e',2)) #元組嵌套,結(jié)果為(1,'c',('e',2))5.3元組需要注意的是,若元組中只有一個元素,則該元素之后的逗號是不能省略的。使用內(nèi)置函數(shù)tuple()也可以創(chuàng)建元組,當該函數(shù)接收的參數(shù)為空時會創(chuàng)建一個空元組,當該函數(shù)接收的參數(shù)為可迭代對象時會創(chuàng)建非空元組,示例代碼如下:t1=tuple() #創(chuàng)建空元組,結(jié)果為()t2=tuple([1,2,3]) #利用列表創(chuàng)建元組,結(jié)果為(1,2,3)#利用字符串創(chuàng)建元組,結(jié)果為('p','y','t','h','o','n')t3=tuple('python')t4=tuple(range(5))#利用可迭代對象創(chuàng)建元組,結(jié)果為(0,1,2,3,4)示例5.3元組Python中支持通過索引與切片的方式訪問元組的元素,也支持在循環(huán)中依次訪問元組的元素,示例代碼如下:print(t2[1])
#以索引方式訪問元組元素print(t3[2:5]) #以切片方式訪問元組元素fordataint3: #在循環(huán)中遍歷元組的元素print(data,end='')示例5.3元組需要注意的是,元組是不可變的數(shù)據(jù)類型,元組一旦創(chuàng)建以后其內(nèi)部的元素不能被修改,因此元組不支持添加元素、刪除元素和元素排序等一些會修改元組元素的操作。實訓(xùn)案例5.4
先定一個小目標!5.4.1成語接龍根據(jù)任務(wù)描述實現(xiàn)案例:成語接龍成語接龍是中華民族傳統(tǒng)的文字游戲,它擁有悠久的歷史和廣泛的社會基礎(chǔ),體現(xiàn)了我國文字、文化、文明的一個縮影,是老少皆宜的民間文化娛樂活動。成語接龍游戲的規(guī)則如下。(1)成語必須由四個字組成。(2)除了第1個成語外,其余成語的第一個字,都是上一個成語的最后一個字,例如,“葉公好龍”“龍馬精神”“神采飛揚”“揚眉吐氣”“氣壯山河”。(3)每輪成語不得有重復(fù)的。現(xiàn)有一組成語,分別是“萬事如意”“發(fā)憤圖強”“笑容滿面”“意氣風(fēng)發(fā)”“強顏歡笑”,本案例要求編寫程序,從“萬事如意”這個成語開始,完成其余成語的自動接龍。5.4.1成語接龍
先定一個小目標!5.4.2中文數(shù)字對照表根據(jù)任務(wù)描述實現(xiàn)案例:中文數(shù)字對照表阿拉伯數(shù)字因其具有簡單易寫、方便使用的特點成為了最流行的數(shù)字書寫方式之一,但在使用阿拉伯數(shù)字計數(shù)時,可以將某些數(shù)字不留痕跡地修改成其他數(shù)字,例如,將數(shù)字“1”修改為數(shù)字“7”,將數(shù)字“3”修改為數(shù)字“8”。為了避免引起不必要的麻煩,可以使用中文大寫數(shù)字如壹、貳、叁、肆……替換阿拉伯數(shù)字,替換規(guī)則如圖所示。5.4.2中文數(shù)字對照表本實例要求編寫程序,實現(xiàn)將輸入的阿拉伯數(shù)字轉(zhuǎn)為中文大寫數(shù)字的功能。集合5.5
先定一個小目標!熟悉集合的操作,能夠熟練地創(chuàng)建集合并操作集合的元素5.5集合1.創(chuàng)建集合集合的表現(xiàn)形式為一組包含在大括號“{}”中、由逗號“,”分隔的元素。使用“{}”可以直接創(chuàng)建集合,示例代碼如下:s1={1} #創(chuàng)建包含一個元素的集合s2={1,'b',(2,5)} #創(chuàng)建包含多個元素的集合使用內(nèi)置函數(shù)set()也可以創(chuàng)建集合,如果該函數(shù)的參數(shù)列表為空,此時創(chuàng)建的是一個空集合,示例代碼如下:s=set()需要注意的是,使用{}不能創(chuàng)建空集合,空集合只能利用set()函數(shù)創(chuàng)建。5.5集合若使用set()函數(shù)創(chuàng)建非空集合,需為該函數(shù)傳入可迭代對象,示例代碼如下:s1=set([1,2,3]) #根據(jù)列表創(chuàng)建集合s2=set((2,3,4)) #根據(jù)元組創(chuàng)建集合s3=set('python') #根據(jù)字符串創(chuàng)建集合s4=set(range(5))
#根據(jù)range()函數(shù)返回的結(jié)果創(chuàng)建集合示例5.5集合2.集合的常見操作集合是可變的,集合中的元素可以動態(tài)增加或刪除。Python提供了一些內(nèi)置方法來操作集合,操作集合的常見方法如表所示。5.5集合方法功能說明add(x)向集合中添加元素x,x已存在時不作處理remove(x)刪除集合中的元素x,若x不存在則拋出KeyError異常discard(x)刪除集合中的元素x,若x不存在不作處理pop()隨機返回集合中的一個元素,同時將該元素從集合中刪除。若集合為空,拋出KeyError異常clear()清空集合copy()復(fù)制集合,返回值為集合isdisjoint(T)判斷兩個集合是否包含相同的元素,如果不包含則返回True,否則返回False使用表中的方法操作本節(jié)創(chuàng)建的集合,示例代碼如下:s1.add('s') #向集合s1中添加元素ss2.remove(3) #刪除集合s2中的元素3s3.discard('p') #刪除集合s3中的元素pdata=s4.pop() #隨機返回集合s4中的元素s3.clear() #清空集合s3s5=s2.copy() #復(fù)制集合s2并賦值給s5s4.isdisjoint(s2) #判斷集合s4和s2是否有相同的元素示例5.5集合3.集合推導(dǎo)式集合推導(dǎo)式的格式與列表推導(dǎo)式相似,區(qū)別在于集合推導(dǎo)式外側(cè)為大括號“{}”,具體如下所示:以上格式中遍歷的目標對象可以是集合或其他可迭代對象。通過集合推導(dǎo)式在列表ls的基礎(chǔ)上生成只包含偶數(shù)元素的新集合,示例代碼如下:ls=[1,2,3,4,5,6,7,8]s={datafordatainlsifdata%2==0}print(s)5.5集合{表達式for臨時變量in目標對象if判斷條件}語法格式字典5.6
先定一個小目標!掌握字典的操作,能夠獨立創(chuàng)建字典5.6.1創(chuàng)建字典在Python中,字典的表現(xiàn)形式為一組包含在大括號“{}”中的鍵值對,每個鍵值對為一個字典元素。不同鍵值對之間使用逗號“,”分隔,鍵和值之間使用“:”分隔,語法格式如下:{鍵1:值1,鍵2:值2,...,鍵N:值N}語法格式5.6.1創(chuàng)建字典字典的值可以是任意類型,鍵可以是任意不可變類型的對象,如字符串、元組等。字典像集合一樣使用“{}”包裹元素,字典中的元素?zé)o序,且鍵必須唯一。使用“{}”可以直接創(chuàng)建字典,示例代碼如下:d1={}
#創(chuàng)建空字典d2={'A':'123','B':'135','C':'680'}
#創(chuàng)建字典,鍵的類型都是字符串d3={'A':123,12:'python'}#創(chuàng)建字典,鍵的類型不同示例5.6.1創(chuàng)建字典使用內(nèi)置函數(shù)dict()也可以創(chuàng)建字典,示例代碼如下:d4=dict() #創(chuàng)建空字典d5=dict({'A':'123','B':'135'}) #創(chuàng)建非空字典
先定一個小目標!掌握字典的操作,能夠訪問字典中的元素5.6.2字典的訪問Python中可以使用字典的鍵訪問其對應(yīng)的值,具體的語法格式如下:print(d2['A'])print(d3[12])5.6.2字典的訪問字典變量[鍵]語法格式訪問字典中的元素,示例代碼如下:Python提供了內(nèi)置方法get(),該方法根據(jù)鍵從字典中獲取對應(yīng)的值,若指定的鍵不存在則返回指定的默認值。get()方法的語法格式如下:print(d2.get('A'))print(d3.get(12))5.6.2字典的訪問d.get(key[,default])語法格式在上述語法格式中,key表示是要獲取值的鍵,default是可選的參數(shù),表示鍵不存在時返回的默認值。如果指定的鍵存在于字典中,則返回與該鍵關(guān)聯(lián)的值;如果鍵不存在,則返回指定的默認值;如果沒有指定默認值,則返回None。除了直接利用鍵訪問值外,Python還提供了用于訪問字典中所有鍵、值和元素的內(nèi)置方法keys()、values()和items(),這些方法的使用示例代碼如下:dic={'name':'小明','age':23,'height':185}print(dic.keys()) #利用keys()獲取所有鍵print(dic.values()) #利用values()獲取所有值print(dic.items()) #利用items()獲取所有元素5.6.2字典的訪問內(nèi)置方法keys()、values()、items()的返回值都是可迭代對象,利用循環(huán)可以遍歷這些對象,以遍歷keys()的返回值為例,示例代碼如下:forkeyindic.keys():print(key)5.6.2字典的訪問
先定一個小目標!掌握字典的操作,能夠向字典中添加和修改元素5.6.3字典元素的添加和修改1.字典元素的添加當字典中不存在某個鍵時,利用如下格式可在字典中新增一個元素:例如,通過上述方式在字典中新增一個元素,具體代碼如下:字典變量[鍵]=值語法格式5.6.3字典元素的添加和修改add_dict={'name':'小明','age':23,'height':185}add_dict['sco']=98
#添加元素print(add_dict)5.6.3字典元素的添加和修改當字典中不存在某個鍵時,使用update()方法同樣可以實現(xiàn)元素的添加,update()方法不僅能給字典添加一個元素,還可以一次性給字典添加多個元素。update()方法的語法格式如下:以上語法格式中參數(shù)other是可選的,表示要添加的元素,它可以接收一個字典,例如{'b':3,'c':4},也可以接收一個由鍵值對元組組成的可迭代對象update([other])語法格式例如[('b',3),('c',4)],還可以接收形如“鍵1=值1,鍵2=值3,…”形式的值,例如
b=3,c=4。示例代碼如下:add_dict.update(weight=98)
#添加一個元素add_dict.update(stu_id=1,address='北京') #添加多個元素示例5.6.3字典元素的添加和修改2.字典元素的修改修改字典元素的本質(zhì)是通過鍵獲取值,再重新對元素進行賦值。修改元素的操作與添加元素的操作基本相同,示例代碼如下:5.6.3字典元素的添加和修改modify_dict={'stu1':'小明','stu2':'小剛','stu3':'小蘭'}modify_dict.update(stu2='小強')#使用update()方法修改元素modify_dict['stu3']='小婷' #通過指定鍵修改元素print(modify_dict)
先定一個小目標!5.6.4字典元素的刪除掌握字典的操作,能夠刪除字典中的元素5.6.4字典元素的刪除1.pop()pop()方法可根據(jù)指定鍵刪除字典中的指定元素,若刪除成功,該方法返回被刪元素的值。示例代碼如下:per_info={'001':'張三','002':'李四','003':'王五','004':'趙六'}print(per_info.pop('001'))#使用pop()刪除指定鍵為001的元素print(per_info)5.6.4字典元素的刪除2.popitem()popitem()方法可以隨機刪除字典中的一個元素。實際上popitem()之所以能隨機刪除元素,是因為字典元素本身無序。若刪除成功,popitem()方法返回被刪除的元素,示例代碼如下:per_info={'001':'張三','002':'李四','003':'王五','004':'趙六'}print(per_info.popitem())#使用popitem()方法隨機刪除元素print(per_info)5.6.4字典元素的刪除3.clear()方法clear()方法用于清空字典中的元素,示例代碼如下:per_info={'001':'張三','002':'李四','003':'王五','004':'趙六'}per_info.clear()#使用clear()方法清空字典中的元素print(per_info)
先定一個小目標!5.6.5字典推導(dǎo)式掌握字典推導(dǎo)式,能夠通過字典推導(dǎo)式創(chuàng)建字典字典推導(dǎo)式是一種快速構(gòu)建字典的方法,它可以根據(jù)一定的規(guī)則從一個可迭代對象中創(chuàng)建字典。字典推導(dǎo)式與列表推導(dǎo)式的格式類似,區(qū)別在于字典推導(dǎo)式的外側(cè)使用大括號包裹,且大括號內(nèi)部的表達式需要包含鍵和值兩部分,基本的語法格式如下:上述語法格式中總共包含兩部分,分別是鍵值對表達式和for循環(huán),其中鍵值對表達式用于生成字典的鍵值對,鍵的表達式和值的表達式既可以是任何有效的包含運算符的表達式,也可以是變量或者常量;for循環(huán)用于遍歷目標對象中的元素,并將元素賦值給臨時變量。注意,臨時變量的個數(shù)和目錄對象的結(jié)構(gòu)是匹配的,比如目標對象為字典時,由于字典里面的元素是一個鍵值對,包括鍵和值兩部分,所以可以使用兩個臨時變量分別存儲鍵和值。{鍵的表達式:值的表達式for臨時變量in目標對象}語法格式5.6.5字典推導(dǎo)式當程序執(zhí)行列表推導(dǎo)式時,首先會創(chuàng)建一個空字典,然后執(zhí)行for循環(huán)遍歷目標對象的元素,在每次循環(huán)中將遍歷到的元素賦值給臨時變量,之后根據(jù)給定的表達式計算或處理鍵和值,將新的鍵值對添加到字典中,最后返回生成的新字典。利用字典推導(dǎo)式可快速交換字典中的鍵和值,示例代碼如下:5.6.5字典推導(dǎo)式old_dict={'name':'小明','age':23,'height':185}new_dict={value:keyforkey,valueinold_dict.items()}print(new_dict)實訓(xùn)案例5.7
先定一個小目標!5.7.1詞頻統(tǒng)計根據(jù)任務(wù)描述實現(xiàn)案例:詞頻統(tǒng)計詞頻統(tǒng)計是一種統(tǒng)計文本中單詞出現(xiàn)頻率的方法,它可以幫助我們了解文本中哪些單詞出現(xiàn)得最頻繁,或者在某個特定的上下文中,某些單詞的使用情況。本案例要求根據(jù)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高級咨詢顧問2024服務(wù)協(xié)議細則
- 房地產(chǎn)租賃協(xié)議2024專業(yè)模板
- 大學(xué)畢業(yè)生實習(xí)合作協(xié)議2024年
- 2024電信服務(wù)大廳裝修項目協(xié)議
- 2024年規(guī)范化倉庫承包協(xié)議模板
- 擔(dān)保業(yè)務(wù)抵押協(xié)議規(guī)范文本2024
- 教育家型鄉(xiāng)村教師培育的保障
- 特種設(shè)備安全管理手冊
- 2024年租金遞增商鋪租約協(xié)議樣本
- 2024年新款測繪儀器交易協(xié)議模板
- 中南大學(xué)RFID實驗報告講解
- 國開(電大)《巖土力學(xué)》形考任務(wù)1-12參考答案
- 監(jiān)護儀常規(guī)操作流程
- 物業(yè)公司消防維保質(zhì)量檢查內(nèi)容及考核評分表
- 電動自行車火災(zāi)的勘查檢驗技術(shù)及案例分析
- 螺栓檢測報告
- 腐蝕測量及技術(shù)
- 家庭醫(yī)生簽約服務(wù)在實施老年高血壓患者社區(qū)護理管理中應(yīng)用
- 氯化鈉與氯化銨分離解析
- 關(guān)注青少年心理健康孩子的人格培養(yǎng)與家庭教育
- 個案面談技巧(2016.6.15)
評論
0/150
提交評論