《程序設計基礎(Python語言)》 課件 任務17:Python元組_第1頁
《程序設計基礎(Python語言)》 課件 任務17:Python元組_第2頁
《程序設計基礎(Python語言)》 課件 任務17:Python元組_第3頁
《程序設計基礎(Python語言)》 課件 任務17:Python元組_第4頁
《程序設計基礎(Python語言)》 課件 任務17:Python元組_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

任務17

Python元組程序設計基礎(Python語言)CONTENTS目錄01任務背景與目標02元組概述03元組創(chuàng)建與訪問04元組常用方法及操作05生成器表達式06元組實例案例07任務測試與總結任務背景與目標01一、任務背景

在Python的數(shù)據類型寶庫中,元組看似簡單但以它不可變的特性守護著數(shù)據的完整性,以有序的排列清晰地呈現(xiàn)著元素的邏輯關系,以異構的包容性將不同類型的數(shù)據完美融合,為數(shù)據組織與處理提供了精妙的解決方案。接下來讓我們跟隨小@的步伐,一起揭開Python元組的神秘面紗,深入剖析其內在本質,掌握其強大功能,領略其在編程實踐中的獨特魅力,開啟精彩紛呈的元組探索之旅,讓元組成為我們編程路上的得力助手,助力我們書寫更優(yōu)美、高效的代碼。二、任務目標1.理解Python元組的基本概念、特點和適用場景。2.熟練掌握元組的相關方法及操作。3.明晰元組與列表的區(qū)別。元組概述02一、元組概述

元組與列表類似,也是由一系列按特定順序排列的元素組成的數(shù)據集。從基本數(shù)據存儲到復雜交互,從簡單的程序邏輯到龐大的系統(tǒng)架構,元組都以其獨特的方式發(fā)揮著關鍵的作用。二、元組特點及適用場景(一)元組特點

元組屬于不可變有序序列,具有不可變性、有序性的特點。

與字符串相似,元組具有不可變性。元組像是戴了“枷鎖”的列表,只可以被訪問,不能被修改。一旦元組被創(chuàng)建,其中元素將無法再被增刪和修改,從而保證數(shù)據的完整性和安全性。

元組元素按照定義的順序存儲,可以通過索引訪問。元組可將多個元素項組合成一個邏輯單元。一個元組可以包括不同類型的元素,如整數(shù)、浮點數(shù)、字符串、元組等,具有很強的靈活性。

相比列表,元組在內存占用和性能上有一定優(yōu)勢,特別是在不需要甚至不準頻繁修改數(shù)據的情況下。(二)適用場景

對于要求只做序列化方式讀取而需防止被篡改的固定數(shù)據和常量集合來講,元組是一個很好的選擇。Python函數(shù)在返回多項結果時,可將數(shù)據以元組方式封裝,防止數(shù)據被修改,方便調用者一次性接收、處理和傳遞給其他函數(shù)或模塊,實現(xiàn)有效的保護數(shù)據。因元組是不可變序列,還常用作字典的鍵,具體將在字典章節(jié)中介紹。元組創(chuàng)建及訪問03一、元組創(chuàng)建Python中提供了多種創(chuàng)建元組的方法。元組除了擁有不可改變的顯著特征之外,在表示方式上也與列表有明顯的區(qū)別:列表用中括號,而元組用小括號。使用“=”直接賦值創(chuàng)建是其中一種方式,可以直接使用“=”將一個元組常量賦值給變量來創(chuàng)建元組對象,語法為元組變量=(元組元素1,元組元素2,...,元組元素n)創(chuàng)建多元素元組時,如果創(chuàng)建的元組所包含的元素數(shù)量超過1,最后一個元素后面的逗號可以省略,例如語句 t1=(1,2,3,'小@','機器人',12.6)創(chuàng)建多元素元組時還可以省略圓括號,例如語句 t2=1,2,3,'小@','機器人',12.6”創(chuàng)建單元素元組時,必需在元素后加逗號,否則將導致數(shù)據類型錯誤。一、元組創(chuàng)建正確用法例如語句t4=(1,)創(chuàng)建空元組例如語句t3=()使用tuple()函數(shù)也能創(chuàng)建元組,該函數(shù)可以將其他可迭代對象(如range對象)轉換為元組,例如代碼t5=tuple(range(1,7,2))創(chuàng)建元組(1,3,5),又如使用列表推導式創(chuàng)建元組包含10以內所有偶數(shù)的平方數(shù)的語句t6=tuple([x**2forxinrange(11)ifx%2==0])二、元組訪問元組的訪問是通過索引值訪問一個或多個(切片)元素,支持正向及反向索引訪問,下標表示方法和列表相同,即與列表有著相同的訪問方式,例如t7=(240101,'計算機網絡專業(yè)','張三','男',15,466.5)print(t7[0],t7[2],t7[5])輸出為240101張三466.5元組常用方法及操作04一、元組常用方法及操作元組支持切片操作,但只能用于訪問元素,不能修改元素,例如t1=tuple(range(1,13,2))print(t1[1:7:2])輸出為(3,7,11)

許多情況下元組可代替列表,但元組的方法比列表少,不支持append()、insert()等修改操作,用del命令能刪除整個元組但不能用刪除元組的元素,例如刪除上例的t1元組的命令為delt1。雖然元組本身元素不可變,但如果元組中某個元素為可變序列,該可變序列的元素是可以修改的,元組保持不變的是對可變序列的引用,例如t3=(0,[1,2],3,4)print(t3[1][0])t3[1][0]='小@’t3[1].extend(range(3))print(t3)輸出結果為1(0,['小@',2,0,1,2],3,4)元組運算操作符同列表一樣,有拼接操作符+、序列重復操作符*、成員關系操作符(in和notin)和關系運算符。一、元組常用方法及操作常用元組方法和處理元組的函數(shù)有多種,元組對象常用方法中,count(value)用于統(tǒng)計元組中某個值出現(xiàn)的次數(shù),例如(1,2,2,3).count(2)輸出為2

index(value,[start,[end]])用于找出元組中某個值第一個匹配項的索引位置,例如('a','b','c','d').index('b’)輸出為1常用于元組的函數(shù)中,len(tuple)獲取元組的長度,例如len(1,2,3)輸出為3一、元組常用方法及操作max(tuple)獲取元組中的最大值(元素需可比較),例如max((1,3,2))輸出為3;min(tuple)獲取元組中的最小值(元素需可比較),例如min((1,3,2))輸出為1;sum(tuple)計算元組中所有數(shù)字元素的和,例如sum((1,2,3,4))輸出為10;sorted(tuple,key=None,reverse=False)對元組中的元素進行排序,返回新列表,例如sorted((3,1,4,1,5))輸出為[1,1,3,4,5]tuple(iterable)將其他可迭代對象轉換為元組,例如tuple([1,2,3])輸出為(1,2,3)生成器表達式05一、生成器表達概述生成器表達式是創(chuàng)建生成器對象的一種簡潔、高效的方法,其語法類似于列表推導式,但使用圓括號()而不是方括號[],具體語法形式為(expressionforiteminiterableifcondition)

其中expression是對每個元素進行的操作,item是從可迭代對象iterable中取出的元素,condition(可選)是篩選條件且當其為True時才會生成元素,例如語句(iiforiinrange(21)ifi%2!=0)定義生成器表達式,建立一個包含20以內所有奇數(shù)的平方數(shù)的元組。二、生成器對象生成器表達式是一種特殊的迭代器,返回生成器對象,生成器對象不能直接使用,要將生成器對象轉化為列表或元組后才能使用,例如使用生成器表達式輸出20以內的奇數(shù)的平方t=list(iiforiinrange(21)ifi%2!=0)t1=tuple(t)t2=list(t)print(t1)print(t2)輸出結果為(1,9,25,49,81,121,169,225,289,361)

[1,9,25,49,81,121,169,225,289,361]二、生成器對象和列表推導式類似,生成器對象也是有序序列,其遍歷方法是用next()函數(shù)或者循環(huán)語句,注意當?shù)谝淮伪闅v后如再次訪問,需重新創(chuàng)建生成器對象,例如使用生成器對象依次輸出10以內的奇數(shù),#next()方法gen=(iforiinrange(10)ifi%2!=0)print(next(gen))print(next(gen))二、生成器對象#for循環(huán)foritemingen:print(item)生成器表達式與列表推導式在形式上和用法上都很相似,不同之處主要有:寫法上生成器表達式使用圓括號,而列表推導式使用方括號;結果上生成器表達式生成一個生成器對象,列表推導式生成一個列表;操作方法上生成器表達式的數(shù)據不一次生成而是在需要時才生成,因此生成器表達式比列表推導式具高效,適合大數(shù)據量的場合。元組實例案列06【案例17-1】使用元組存儲相關的位置以及輸出一、案例描述創(chuàng)建一個元組來表示人形機器人小@的初始位置坐標和方向信息,例如(0,0,'north'),其中前兩個元素表示位置的二維坐標、第三個元素表示方向。本元組是后面巡航定位和確定朝向的前提,為后續(xù)移動和任務執(zhí)行提供基礎。二、案例步驟詳解1.初始化信息使用元組初始位置信息2.存儲并輸出存于元組initial_position并打印輸出三、代碼示例及顯示結果#創(chuàng)建元組表示人形機器人小@的初始位置坐標和方向信息x=input('請輸入小@的初始位置的x坐標:')y=input('請輸入小@的初始位置的y坐標:')direction=input('請輸入小@的初始位置的方向:')initial_position=(x,y,direction)#打印元組print("人形機器人小@的初始位置坐標和方向信息:",initial_position)案例輸出:【案例17-2】使用元組進行數(shù)據的分析一、案例描述將溫度傳感器和濕度傳感器采集的數(shù)據合并,組成一個包含多種信息的新元組,實現(xiàn)環(huán)境溫濕度情況的同時分析,統(tǒng)計某項指標中特定值的出現(xiàn)次數(shù),如統(tǒng)計小@在執(zhí)行在執(zhí)行一批任務過程中向各個方向移動的次數(shù)、統(tǒng)計分析小@的運動模式和工作情況。這些功能都可優(yōu)化任務調度和路徑規(guī)劃提供依據。二、案例步驟詳解1.初始化元組使用元組初始化各項數(shù)據2.合并元組使用相關操作合并元組3.分析數(shù)據統(tǒng)計相關數(shù)據,得到分析結果三、代碼示例及顯示結果#溫度傳感器數(shù)據temperature_data=(22.5,23.0,22.8,23.0,22.7,23.1,23.8,23.0,22.8)#濕度傳感器數(shù)據humidity_data=(45,47,46,48,47)#合并兩個元組combined_data=temperature_data+humidity_data#打印合并后的元組print("合并后的溫濕度數(shù)據:",combined_data)#統(tǒng)計溫度23.0出現(xiàn)的次數(shù)count_23_0=temperature_data.count(23.0)#打印統(tǒng)計結果print("溫度23.0出現(xiàn)的次數(shù):",count_23_0)案例輸出:任務測試與總結07一、選擇題1.以下關于元組的說法正確的是()A.元組是可變的,可以隨意修改其中的元素

B.元組使用方括號[]來定義C.元組是不可變的序列類型

D.元組中的元素必須是相同類型的數(shù)據2.有元組t=(1,2,3),如何訪問其中的元素2?()A.T(1) B.t(2) C.t[1] D.t[2]3.在以下代碼的輸出是什么?

t1=(1,2,3);t2=(4,5,6);t3=t1+t2;print(t3)A.(1,2,3) B.(4,5,6) C.(1,2,3,4,5,6) D.空集4.以下創(chuàng)建元組的方式正確的是()A.t=1,2,3 B.t=[1,2,3] C.t={1,2,3} D.t=‘1,2,3’5.若有元組t=(1,2,[3,4]),以下說法正確的是

()A.整個元組是不可變的,包括其中的列表

B.無法訪問其中列表的元素C.元組不可變,但其中的列表元素是可變的

D.元組的訪問不受限制一、選擇題6.在Python中,元組使用什么符號來定義()A.[] B.() C.{} D.‘’7.如何獲取元組中的某個元素()A.使用切片操作,如tp1[2] B.使用get方法,如tp1.get(2)C.直接使用元素的位置,如tp1(2) D.以上都不對8.有一個元組t=(1,2,3,4,5),想要獲取從第二個元素到第四個元素的子元組,應該怎么做()A.t[1:4] B.t.slice(1,4) C.t.substring(1,4) D.t.get_subtuple(1,4)9.以下哪種數(shù)據類型與元組最相似,但又是可變的?A.字符串 B.列表 C.集合 D.字典10.元組和列表在性能上有什么主要區(qū)別?()A.元組的創(chuàng)建速度更快,因其是不可變的

B.列表的查找速度更快C.元組占用的內存更少

D.以上A和C都正確一、選擇題11.在Python中,為什么經常使用元組來返回多個值?()A.因為元組是不可變的,所以更安全

B.元組占用的內存更少C.元組可以方便地解包賦值給多個變量

D.所有以上原因12.以下哪個選項可以正確創(chuàng)建一個包含三個元素的元組?()A.tp1={1,2,3} B.tp1=[1,2,3] C.tp1=(1,2,3) D.tp1=1,2,3,13.已知tp1=(1,2,3,4,5),以下哪個操作會導致錯誤()A.tp1=[] B.new_tuple=tp1+(6,7,8)C.print(tp1[1:3]) D.deltp1[2]14.已知tuple1=('a','b','c','d'),執(zhí)行a,b,*c=tuple1后,變量c的值?()A.('c','d') B.['c','d'] C.('c') D.('d’)15.以下哪個選項不能獲取tuple1=(10,20,30,40,50)所有元素的和?()A.sum(tp1) B.tp1.sum()C.total=0;foriintp1:total

溫馨提示

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

評論

0/150

提交評論