python課件第4章 Python的四種典型序列結構_第1頁
python課件第4章 Python的四種典型序列結構_第2頁
python課件第4章 Python的四種典型序列結構_第3頁
python課件第4章 Python的四種典型序列結構_第4頁
python課件第4章 Python的四種典型序列結構_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

序列、列表元組、字典集合容器中的公共操作推到式與生成器推導式第4章Python的四種典型序列結構參考書目《Python程序設計》目錄序列列表元組字典集合容器中的公共操作推到式與生成器推導式這里說明圖片內容序列序列概述:序列是一塊用于存放多個值的連續(xù)內存空間,并且按一定順序排列,每一個值(稱為元素)都分配一個數(shù)字,稱為索引或位置。通過該索引可以取出相應的值。例如,我們可以把一家酒店看作一個序列,那么酒店里的每個房間都可以看作是這個序列的元素。而房間號就相當于索引,可以通過房間號找到對應的房間。序列1索引Python的索引可以是負數(shù):元素1元素2元素3元素4元素…元素n0123…n-1索引:列中的每一個元素都有一個編號,也稱為索引。這個索引是從0開始遞增的,即下標為0表示第一個元素,下標為1表示第2個元素,依此類推:元素1元素2元素3元素4元素…元素n-1-n-(n-1)-(n-2)-(n-3)…-2序列切片:切片是指對操作的對象截取其中一部分的操作,即從容器中取出相應的元素重新組成一個容器。語法格式如下:2切片sname:表示序列的名稱。start:表示切片的開始位置(包括該位置),如果不指定則默認為0。end:表示切片的截止位置(不包括該位置),如果不指定則默認為序列的長度。step:表示切片的步長,如果省略,則默認為1,當省略該步長時,最后一個冒號也可sname[start:end:step]序列

切片選取的區(qū)間屬于左閉右開型,即從“起始”位開始,到“結束”位的前一位結束(不包括結束位本身)。根據(jù)步長的取值,可以分為如下兩種情況:2切片(1)步長大于0:按照從左到右的順序,每隔“步長-1”(索引間的差值仍為步長值)個字符進行一次截取。(2)步長小于0:按照從右到左的順序,每隔“步長-1”(索引間的差值仍為步長值)個字符進行一次截取。序列序列相加:在Python中,支持兩種相同類型的序列相加操作。即將兩個序列進行連接,使用加(+)運算符實現(xiàn)。3序列相加c1=["fudan","sjtu","nju","zju","ustc"]c2=["pku","tsinghua","fudan","xjtu"]print(c1+c2)運行結果:['fudan','sjtu','nju','zju','ustc','pku','tsinghua','fudan','xjtu']從上面的輸出結果中,可以看出兩個列表被合為一個列表了。【例】將如下兩個列表相加。序列序列乘法:在Python中,使用數(shù)字n乘以一個序列會生成新的序列。新序列的內容為原來序列被重復n次的結果。4序列乘法love=["我是愛你的"]print(love*3)運行結果:['我是愛你的','我是愛你的','我是愛你的']【例】將一個序列乘以3生成一個新的序列并輸出,達到“重要事情說三遍”的效果。序列檢查某個元素是否是序列的成員:在Python中,可以使用in關鍵字檢查某個元素是否包含在該序列中。語法格式如下:5.檢查某個元素是否是序列的成員c=["pku","tsinghua","fudan","sjtu","nju","zju","ustc","hit","xjtu"]print("hit"inc)運行結果:True【例】要檢查名稱為c的序列中,是否包含元素“hit”。序列

計算序列的長度、最大值和最小值:在Python中,提供了內置函數(shù)計算序列的長度、最大值和最小值。使用len()函數(shù)計算序列的長度使用max()函數(shù)返回序列中的最大元素使用min()函數(shù)返回序列中的最小元素6計算序列的長度、最大值和最小值year=[1898,1911,1905,1896,1902,1897,1958,1920,1896]print("在year序列的長度:",len(year),",其中,最大值為:",max(year),"最小值為:",min(year))運行結果:在year序列的長度:9,其中,最大值為:1958最小值為:1896【例】定義一個包括9個元素的列表,并通過len()函數(shù)計算列表的長度,最大元素、最小元素。序列除了上面介紹的3個內置函數(shù),Python還提供了如表所示的內置函數(shù)。6計算序列的長度、最大值和最小值內置函數(shù)功能list()將序列轉換為列表str()將序列轉換為字符串sum()計算元素和sorted()對元素進行排序reversed()反向序列中的元素enumerate()將序列組合為一個索引序列,多用在for循環(huán)中zip()返回幾個列表壓縮成的新列表列表列表概述:Python中的列表是由一系列按特定順序排列的元素組成的。它是Python中內置的可變序列。在形式上,列表的所有元素都放在一對中括號“[]”中,兩個相鄰元素間使用逗號“,”分隔。在內容上,可以將整數(shù)、實數(shù)、字符串、列表、元組等任何類型的內容放入到列表中列表1列表的創(chuàng)建與刪除.列表的創(chuàng)建與刪除:創(chuàng)建列表時,也可以使用賦值運算符“=”直接將一個列表賦值給變量,具體的語法格式如下:listname=[元素1,元素2,元素3,…,元素n]創(chuàng)建數(shù)值列表:在Python中,數(shù)值列表很常用。例如,在考試系統(tǒng)中記錄學生的成績,或者在游戲中記錄每個角色的位置,各個玩家的得分情況等都可應用數(shù)值列表。創(chuàng)建空列表:例如,要創(chuàng)建一個名稱為emptylist的空列表,可以使用的代碼:emptylist=[]刪除列表:對于已經(jīng)創(chuàng)建的列表,不再使用時,可以使用del語句將其刪除。語法格式如下:dellistname03010402列表2列表元素的訪問與遍歷1.采用下標法訪問列表元素:在Python中,如果想將列表的內容輸出也比較簡單,可以直接使用print()函數(shù)。2.遍歷列表:列表的循環(huán)遍歷是指依次打印列表中的各個數(shù)據(jù)。在Python中遍歷列表的方法有多種,下面介紹5種常用的方法。直接使用for循環(huán)實現(xiàn)Q1使用for循環(huán)和enumerate()函數(shù)實現(xiàn)Q2利用while語句輸出列表的各個元素Q3利用索引遍歷Q4利用索引遍歷Q5列表3列表元素的常用操作

添加元素的方法append()方法用于在列表末尾添加新的對象。語法格式:listname.append(obj)extend()方法用于在列表末尾一次性追加另一個序列中的多個值,如果數(shù)據(jù)是一個序列,則將這個序列的數(shù)據(jù)逐一添加到列表。extend()方法語法:list.extend(seq)insert()方法用于將指定對象插入列表的指定位置。insert()方法語法:list.insert(index,obj)列表3列表元素的常用操作

刪除元素pop()方法用于移除列表中的一個元素(默認最后一個元素),并且返回該元素的值。clear()方法用于清空列表,類似于dela[:]。clear()方法語法:list.clear()根據(jù)索引刪除元素刪除列表中的指定元素和刪除列表類似,也可以使用del語句實現(xiàn)。根據(jù)元素值刪除元素方法如果想要刪除一個不確定其位置的元素(即根據(jù)元素值刪除),可以使用列表對象的remove()方法實現(xiàn)。列表3列表元素的常用操作

修改元素方法修改指定下標數(shù)據(jù)修改列表中的元素只需要通過索引獲取該元素,然后再為其重新賦值即可。reverse()方法用于反向列表中元素。reverse()方法語法:list.reverse()copy()方法用于復制列表,類似于a[:]。列表3列表元素的常用操作

.查找元素方法len()方法len()方法功能是返回列表元素個數(shù)。用in判斷是否存在通??梢杂胕n判斷指定數(shù)據(jù)在某個列表序列,如果在返回True,否則返回False。index()方法用于從列表中找出某個值第一個匹配項的索引位置,即獲取指定元素首次出現(xiàn)的下標。count()方法用于統(tǒng)計某個元素在列表中出現(xiàn)的次數(shù)。列表4列表元素的統(tǒng)計與排序列表元素的統(tǒng)計:在Python中,提供了sum()函數(shù)用于統(tǒng)計數(shù)值列表中各元素的和。列表元素的排序:Python中提供了兩種常用的對列表進行排序的法。使用列表對象的sort()方法實現(xiàn)、使用內置的sorted()函數(shù)實現(xiàn)。列表5列表的嵌套嵌套列表就是列表中包含列表。嵌套列表可以模擬出現(xiàn)實中的表格、矩陣、2D游戲的地圖、棋盤等?!纠客ㄟ^對列表的嵌套應用,實現(xiàn)3×4矩陣的轉置行和列。matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]transposed=[]foriinrange(4):midden=[]forrowinmatrix:midden.append(row[i])transposed.append(midden)print(transposed)運行結果:[[1,5,9],[2,6,10],[3,7,11],[4,8,12]]元組元組概述:元組(tuple)是Python中另一種內置的存儲有序數(shù)據(jù)的結構。元組與列表類似,也是由一系列按特定順序排列的元素組成,可存儲不同類型的數(shù)據(jù),如字符串、數(shù)字甚至元組。然而,元組是不可改變的,創(chuàng)建后不能再做任何修改操作。元組1元組的創(chuàng)建與刪除1.使用賦值運算符直接創(chuàng)建元組:tuplename=(元素1,元素2,元素3,...,元素n)tuplename表示元組的名稱,可以是任何符合Python命名規(guī)則的標識符2.創(chuàng)建空元組:在Python中,也可以創(chuàng)建空元組,空元組可以應用在為函數(shù)傳遞一個空值或者返回空值時3.創(chuàng)建數(shù)值元組:在Python中,可以使用tuple()函數(shù)直接將range()函數(shù)循環(huán)出來的結果轉換為數(shù)值元組。語法格式如下:tuple(data)4.刪除元組5.整體修改元組元素1元組的創(chuàng)建與刪除4.刪除元組:元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組。對于已經(jīng)創(chuàng)建的元組,不再使用時,可以使用del語句將其刪除。5.整體修改元組元素:元組是不可變序列,所以不能對它的單個元素值進行修改。但是元組也不是完全不能修改,可以對元組進行重新賦值。元組1元組的創(chuàng)建與刪除4.刪除元組:元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組。對于已經(jīng)創(chuàng)建的元組,不再使用時,可以使用del語句將其刪除。5.整體修改元組元素:元組是不可變序列,所以不能對它的單個元素值進行修改。但是元組也不是完全不能修改,可以對元組進行重新賦值。元組2元組的常見操作03040102len(tup):

返回元組中元素的個數(shù)。max(tup):返回元組中元素最大的值。min(tup):返回元組中元素最小的值。tuple(seq):將列表轉化為元組。元組數(shù)據(jù)不支持修改,只支持查找。接下來,介紹元組的查找操作。對元組進行查找操作的內建函數(shù)包括以下四種元組的常見操作元組3元組與列表的區(qū)別與相互轉換元組1.元組與列表的區(qū)別(1)表屬于可變序列,它的元素可以隨時修改或者刪除:元組屬于不可變序列,其中的元素不可以修改,除非整體替換。(2)列表可以使用append()、extend()、insert()、remove()和pop()等方法實現(xiàn)添加和修改列表元素:而元組則沒有這幾個方法,因為不能向元組中添加和修改元素,同樣也不能刪除元素。(3)列表可以使用切片訪問和修改列表中的元素;元組也支持切片,但是它只支持通過切片訪問元組中的元素,不支持修改。(4)元組比列表的訪問和處理速度快。所以如果只需要對其中的元素進行訪問,而不進行任何修改,建議使用元組。(5)列表不能作為字典的鍵,則元組則可以。3元組與列表的區(qū)別與相互轉換元組元組與列表可以互相轉換:tuple()函數(shù)接收一個列表,可返回一個包含相同元素的元組list()函數(shù)接收一個元組并返回一個列表。從元組與列表的性質來看,tuple()相當于凍結一個列表,而list()相當于解凍一個元組。字典元組概述:在許多應用中需要利用關鍵詞查找對應信息,例如,通過學號來檢索某學生的信息。其中,通過學號查找所對應學生的信息的方式稱為“映射”。Python語言的字典(dictionary)類型就是一種映射。其他編程語言中也提供類似的結構,例如,哈希(Hash)、關聯(lián)數(shù)組等。1字典的創(chuàng)建字典字典包含了一個索引的集合,稱為鍵(key)和值(value)的集合。一個鍵對應一個值。通過給定的“鍵-值對”創(chuàng)建字典語法如下:dictionary=dict(key1=value1,key2=value2,...,keyn=valuen).通過映像函數(shù)創(chuàng)建字典語法格式:dictionary=dict(zip(list1,list2))參數(shù)說明如下:dictionary:表示字典名稱。字典的創(chuàng)建2字典元素的訪問與遍歷字典字典元素的遍歷字典是以“鍵-值對”的形式存儲數(shù)據(jù)的,所以就可能需要對這些“鍵-值對”進行獲取。Python提供了遍歷字典的方法,通過遍歷可以獲取字典中的全部“鍵-值對”。字典元素的訪問可直接使用print()函數(shù)輸出字典的內容,如print(dictname)。但是,在使用字典時,很少直接輸出它的內容。一般需要根據(jù)指定的鍵得到相應的結果。字典元素的訪問與遍歷3字典元素的常見操作字典1.字典元素的增加由于字典是可變序列,所以可以隨時在其中增加“鍵-值對”,這和列表類似。向字典中添加元素的語法格式如下:dictionary[key]=valuedictionary:表示字典名稱;key:表示要增加元素的鍵,必須是唯一的,并且不可變,例如可以是字符串、數(shù)字或者元組;value:表示元素的值,可以是任何數(shù)據(jù)類型,不是必須唯一。3字典元素的訪問與遍歷字典

字典元素的刪除del()/del:刪除字典或刪除字典中指定鍵值對clear():清空字典pop():獲取指定key對應的value,并刪除這個key-value對4字典元素的查找字典如果當前查找的key存在,則返回對應的值;否則則報錯。字典元素的查找,可以通過如下兩種方式查找:1)通過鍵值方式。前邊已經(jīng)講述。2)通過get()、keys()、values()以及items()函數(shù)方式查找。

兩個重要的點需要記?。?)不允許同一個鍵出現(xiàn)兩次。創(chuàng)建時如果同一個鍵被賦值兩次,后一個值會被記住。2)字典的鍵值必須不可變,可以用數(shù),字符串或元組充當。由于用列表的值是變化的,就不能作為鍵。集合集合概述:Python中的集合(set)與數(shù)學中的集合概念類似,也是用于保存不重復的元素。它有可變集合(set)和不可變集合(frozenset)兩種。在形式上,集合的所有元素都放在一對大括號中,兩個相鄰元素間使用逗號“,”分隔。集合最好的應用就是去重,因為集合中的每個元素都是唯一的。1集合的創(chuàng)建集合在Python中提供了兩種創(chuàng)建集合的方法,一種是直接使用“{}”創(chuàng)建;另一種是通過set()函數(shù)將列表、元組等可迭代對象轉換為集合。一般推薦使用第二種方法。使用set()函數(shù)創(chuàng)建集合在Python中,可以使用set()函數(shù)將列表、元組等其他可迭代對象轉換為集合。set()函數(shù)的語法格式如下:setname=set(iteration)直接使用{}創(chuàng)建集合在Python中,創(chuàng)建set集合也可以像列表、元組和字典一樣,直接將集合賦值給變量,從而實現(xiàn)創(chuàng)建集合,即直接使用大括號“{}”創(chuàng)建。集合的創(chuàng)建2集合元素的常見操作集合03040102向集合中添加元素:add()方法。update()方法是向集合追加的數(shù)據(jù)是序列從集合中刪除元素:del命令刪除整個集合,集合的discard()方法、pop()方法或者remove()方法刪除一個元素,或者使用集合對象的clear()方法清空集合,即使其變?yōu)榭占稀2檎以卦诩现杏胕n判斷數(shù)據(jù)在集合序列;notin:判斷數(shù)據(jù)不在集合序列。tuple(seq):將列表轉化為元組。集合是可變序列,所以在創(chuàng)建集合后,還可以對其添加或者刪除元素。集合元素的常見操作2集合的交集、并集和差集數(shù)學運算集合集合最常用的操作就是進行交集、并集、差集和對稱差集運算。進行交集運算時使用“&”符號;進行并集運算時使用“|”符號;進行差集運算時使用“-”符號。集合是可修改的數(shù)據(jù)類型,但集合中的元素必須是不可修改的。換句話說,集合中元素只能是數(shù)值、字符串、元組之類。容器中的公共操作

容器中的公共操作概述:容器是一種把多個元素組織在一起的數(shù)據(jù)結構,容器中的元素可以逐個地迭代獲取,可以用in,notin關鍵字判斷元素是否包含在容器中。容器是一種可以包含其他類型對象(如列表、元組、字典等)作為元素的對象。容器僅僅只是用來存放數(shù)據(jù)的,我們平常看到的l=[1,2,3,4]等等,好像我們可以直接從列表這個容器中取出元素,但事實上容器并不提供這種能力,而是可迭代對象賦予了容器這種能力。1運算符操作容器中的公共操作在上述序列中,常常都會用到+、*、in和notin,接下來對各個運算符進行解釋。

運算符操作“+”運算符“+”運算符,主要用于字符串、列表、元組的合并操作。list()方法list()方法作用:將某個序列轉換成列表.set()方法set()方法作用:將某個序列轉換成集合2公共方法容器中的公共操作在序列方法中,常用的公共方法有l(wèi)en()方法、del或del()方法、max()和min()方法、range(start,end,step)和.enumerate()方法。

公共方法len()方法len()方法可以統(tǒng)計字符串、列表、元組、字典容器中元素個數(shù)。.del或del()方法del或del()方法刪除字符串、列表部分或全部元素。max()和min()方法max()和min()方法分別返回容器中元素最大值和最小值。3容器類型轉換容器中的公共操作在上述的各類容器中,可以通過tuple()、list()和set()進行相互轉換。

容器類型轉換tuple()方法tuple()方法作用:將某個序列轉換成元組.del或del()方法del或del()方法刪除字符串、列表部分或全部元素。max()和min()方法max()和min()方法分別返回容器中元素最大值和最小值。推導式與生成器推導式

推導式與生成器推導式概述:推導式(又稱解析式),是Python的一種獨有特性。推導式是可以從一個數(shù)據(jù)序列構建另一個新的數(shù)據(jù)序列的結構體。Python中共有三種推導,在Python2和3中都有支持:列表(list)推導式、字典(dict)推導式、集合(set)推導式。推導式的最大優(yōu)勢是化簡代碼,主要適合于創(chuàng)建或控制有規(guī)律的序列1列表推導式推導式與生成器推導式使用列表推導式可以快速生成一個列表,或者根據(jù)某個列表生成滿足指定需求的列表。列表推導式通常有以下幾種常用的語法格式。

列表推導式從列表中選擇符合條件的元素組成新的列表多個for實現(xiàn)列表推導式生成指定范圍的數(shù)值列表根據(jù)列表生成指定需求的列表2字典推導式推導式與生成器推導式字典推導式的基礎模板:{key:valueforkey,valueinexisting_data_structure}

容器類型轉換利用字典推導式創(chuàng)建一個字典將兩個列表合并為一個字典提取字典中目標數(shù)據(jù)3集合推導式推導式與生成器推導式集合推導式跟列表推導式是相似的,唯一的區(qū)別就是它使用的是大括號。集合推導式基礎模板:{exprforvalueincollectionifcondition}【例】將名字去重并把名字的格式統(tǒng)一為首字母大寫。names=['Bob','JOHN','alice','bob','ALICE','James','Bob

溫馨提示

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

評論

0/150

提交評論