Python數(shù)據(jù)分析與可視化(第2版) 教案 2.7 Python函數(shù)操作_第1頁(yè)
Python數(shù)據(jù)分析與可視化(第2版) 教案 2.7 Python函數(shù)操作_第2頁(yè)
Python數(shù)據(jù)分析與可視化(第2版) 教案 2.7 Python函數(shù)操作_第3頁(yè)
Python數(shù)據(jù)分析與可視化(第2版) 教案 2.7 Python函數(shù)操作_第4頁(yè)
Python數(shù)據(jù)分析與可視化(第2版) 教案 2.7 Python函數(shù)操作_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

課題2.7Python函數(shù)操作課型講練授課班級(jí)大數(shù)據(jù)授課時(shí)數(shù)2教學(xué)目標(biāo)1.能夠創(chuàng)建自定義函數(shù)。2.理解函數(shù)中參數(shù)的意義。3.能夠創(chuàng)建匿名函數(shù)。教學(xué)重點(diǎn)1.能夠創(chuàng)建自定義函數(shù)。2.理解函數(shù)中參數(shù)的意義。教學(xué)難點(diǎn)1.能夠創(chuàng)建匿名函數(shù)。學(xué)情分析在后面的pandas數(shù)據(jù)分析中,存在大量的數(shù)據(jù)分析函數(shù),比如可以匿名函數(shù)處理對(duì)數(shù)據(jù)單位進(jìn)行預(yù)處理,所以了解函數(shù)處理機(jī)制對(duì)于后續(xù)的學(xué)習(xí)有很大的幫助。在程序設(shè)計(jì)中,有很多操作是完全相似的,只是處理的對(duì)象不同,遇到這種情況比較好的做法是將反復(fù)用到的某些程序?qū)懗珊瘮?shù),當(dāng)需要時(shí)調(diào)用函數(shù)就可以了。Python自帶了很多內(nèi)置函數(shù),如輸入函數(shù)input和輸出函數(shù)print。當(dāng)然,用戶也可以自己創(chuàng)建函數(shù),稱為自定義函數(shù)。一、定義函數(shù)在Python中,將一個(gè)程序段的運(yùn)算或處理放在函數(shù)中完成,這就需要先定義函數(shù),然后根據(jù)需要調(diào)用函數(shù),而且可以多次調(diào)用,這也體現(xiàn)了函數(shù)的特點(diǎn)。Python函數(shù)定義的一般格式為:def函數(shù)名(形式參數(shù)1,形式參數(shù)2,…): 函數(shù)體 函數(shù)的定義需要注意幾點(diǎn):(1)函數(shù)定義是以關(guān)鍵字def開(kāi)始,后面跟函數(shù)名,函數(shù)后面跟括號(hào)括起來(lái)的形式參數(shù),當(dāng)函數(shù)有多個(gè)參數(shù)的時(shí)候,形式參數(shù)之間要用逗號(hào)隔開(kāi)。形式參數(shù)在定義的時(shí)候并不占用內(nèi)存地址。(2)函數(shù)體描述了函數(shù)的主要功能,函數(shù)體往往包含return語(yǔ)句,該語(yǔ)句用于傳遞函數(shù)的返回值,如果沒(méi)有return語(yǔ)句,則表示函數(shù)不返回任何值。示例代碼如下:deffun(x,y):result=(x**2+y**2)/2#計(jì)算(x^2+y^2)/2returnresult二、調(diào)用函數(shù)當(dāng)定義了函數(shù)之后,就可以調(diào)用函數(shù),調(diào)用函數(shù)需要在形式參數(shù)的位置輸入實(shí)際參數(shù)值,調(diào)用有參數(shù)函數(shù)的形式:函數(shù)名(實(shí)際參數(shù)值1,實(shí)際參數(shù)值2,…)其中,實(shí)際參數(shù)值在輸入時(shí),要保證與形式參數(shù)一一對(duì)應(yīng),并且參數(shù)類型也要兼容。實(shí)際參數(shù)在使用時(shí)會(huì)占用內(nèi)存地址。示例代碼如下:deffun(x,y):result=(x**2+y**2)/2#計(jì)算(x^2+y^2)/2returnresultprint("兩個(gè)數(shù)2和3的平方和的平均值為:",fun(2,3))輸出結(jié)果如圖2-*所示。圖2-*定義與調(diào)用函數(shù)示例結(jié)果 三、匿名函數(shù)在程序設(shè)計(jì)中,有的函數(shù)需要反復(fù)使用,就可以通過(guò)前面的方法定義函數(shù)并進(jìn)行調(diào)用。而有的函數(shù)僅僅是臨時(shí)使用,使用一次后就不再使用,這樣的函數(shù)就是匿名函數(shù),匿名函數(shù)就是可以不用定義函數(shù)名而直接使用的函數(shù)。非匿名函數(shù)在定義時(shí),就已經(jīng)創(chuàng)建函數(shù)對(duì)象和作用域?qū)ο?,所以即使未調(diào)用非匿名函數(shù),也占用內(nèi)存空間。而匿名函數(shù),僅在調(diào)用時(shí),才臨時(shí)創(chuàng)建函數(shù)對(duì)象和作用域鏈對(duì)象;調(diào)用完,立即釋放,所以匿名函數(shù)比非匿名函數(shù)更節(jié)省內(nèi)存空間。1.匿名函數(shù)的定義在Python中,可以使用lambda關(guān)鍵字來(lái)定義一個(gè)匿名函數(shù),lambda的一般格式為:lambda參數(shù)1,參數(shù)2,…:表達(dá)式其中,關(guān)鍵字lambda表示匿名函數(shù),冒號(hào)前面表示參數(shù)名,參數(shù)可以有多個(gè),但是只有一個(gè)返回值,因此只能有一個(gè)表達(dá)式,返回值就是該表達(dá)式的結(jié)果。示例代碼如下:f=lambdax,y:(x**2+y**2)/2print("兩個(gè)數(shù)2和3的平方和的平均值為:",f(2,3))輸出結(jié)果如圖2-*所示。圖2-*匿名函數(shù)示例結(jié)果2.匿名函數(shù)的操作由于匿名函數(shù)lambda里面不能處理for循環(huán)之類的復(fù)雜運(yùn)算,所以如果要對(duì)匿名函數(shù)lambda進(jìn)行復(fù)雜運(yùn)算,就需要與map、filter等運(yùn)算結(jié)合起來(lái)使用。(1)map操作匿名函數(shù)的map操作可以使用匿名函數(shù)作用于可迭代對(duì)象(如列表、元組等序列)的每一個(gè)元素,map操作一般格式為:map(function,iterable)其中,iterable表示使用可迭代對(duì)象,function表示lambda匿名函數(shù)。map操作的結(jié)果僅僅是一個(gè)迭代結(jié)果,如<mapobjectat0x000001C12226B128>,要查看結(jié)果必須用list進(jìn)行輸出,即list(map(function,iterable))。示例代碼如下:print("輸出1到20的平方構(gòu)成的列表:")result=list(map(lambdax:x**2,range(1,21)))print(result)輸出結(jié)果如圖2-*所示。圖2-*filter操作示例結(jié)果(2)filter操作匿名函數(shù)的filter操作可以使用匿名函數(shù)的布爾值結(jié)果應(yīng)用于可迭代對(duì)象(如列表、元組等序列)的每一個(gè)元素,返回所有為T(mén)rue的元素,并放在一個(gè)迭代結(jié)果中。filter操作的一般格式為:filter(function,iterable)示例代碼如下:print("輸出100以內(nèi)6的倍數(shù)的列表:")result=list(filter(lambdax:x%6==0,range(1,101)))print(result)輸出結(jié)果如圖2-*所示。圖2-*filter操作示例結(jié)果任務(wù)實(shí)訓(xùn)任務(wù)1:創(chuàng)建函數(shù)fun_sum,該函數(shù)包含1個(gè)形式參數(shù)n,函數(shù)的作用是計(jì)算:1+2+……+n。并調(diào)用該函數(shù),輸入實(shí)際參數(shù)值10。具體代碼如下:deffun_sum(n):sum=0foriinrange(n+1):sum=sum+ireturnsumprint("前10個(gè)整數(shù)的和=",fun_sum(10))輸出結(jié)果如圖2-*所示。圖2-*任務(wù)1輸出結(jié)果任務(wù)2:定義函數(shù)fun_list,該函數(shù)有兩個(gè)形式參數(shù),第1個(gè)形式參數(shù)為一個(gè)輸入列表,第2個(gè)形式參數(shù)表示列表的多個(gè)輸出結(jié)果。第2個(gè)形式參數(shù)也是一個(gè)列表,該列表有3個(gè)取值,0表示輸出列表的長(zhǎng)度,1表示輸出列表所有元素的和,2表示輸出列表所有元素的平均值。輸入列表[2,3,4,1,6,7,5],通過(guò)函數(shù)fun_list輸出列表的長(zhǎng)度和列表所有元素的平均值。具體代碼如下:deffun_list(list,n):result=[]list_len=len(list)result.append(list_len)list_sum=0foriinlist:list_sum=list_sum+ilist_mean=list_sum/list_lenresult.append(list_sum)result.append(list_mean)print("輸入的列表為:",list)returnresult[n]list=[2,3,4,1,6,7,5]print("列表長(zhǎng)度為:",fun_list(list,0))print("列表所有元素的平均值為:",fun_list(list,2))輸出結(jié)果如圖2-*所示。圖2-*任務(wù)2輸出結(jié)果任務(wù)3:利用匿名函數(shù)的map操作,將列表[0.22,0.34,0.44]中的每一個(gè)元素都轉(zhuǎn)換成百分比形式。具體代碼如下:print("原始列表為:",[0.22,0.34,0.44])result=list(map(lambdax:"%.2f%%"%(x*100),[0.22,0.34,0.44]))print("轉(zhuǎn)換后的列表為:",result)【分析】%.2f是格式符,表示2位小數(shù)的浮點(diǎn)數(shù),%%是格式符,表示百分號(hào)%。輸出結(jié)果如圖2-*所示。圖2-*任務(wù)3輸出結(jié)果任務(wù)4:利用匿名函數(shù)的filter操作,生成一個(gè)由個(gè)位為2的二位數(shù)組成的列表list1,即list1=[12,22,32,…,92],再用map操作將這個(gè)列表中每個(gè)元素除以10,生成一個(gè)新列表list2,即list=[1.2,2.2,3.2,…,9.2],list2的前3三個(gè)元素組成的切片列表list3,以此輸出list1、list2、list3。具體代碼如下:list1=list(filter(lambdax:x%10==2,range(101)))print("list1=",list1)list2=list(map(lambdax:x/10,list1))pr

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論