python3中apply函數(shù)和lambda函數(shù)的使用詳解_第1頁
python3中apply函數(shù)和lambda函數(shù)的使用詳解_第2頁
python3中apply函數(shù)和lambda函數(shù)的使用詳解_第3頁
python3中apply函數(shù)和lambda函數(shù)的使用詳解_第4頁
python3中apply函數(shù)和lambda函數(shù)的使用詳解_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第python3中apply函數(shù)和lambda函數(shù)的使用詳解Out:['Red','Purple','Green','Blue']

用sorted還能處理首字母不規(guī)范的情況,連排序都省了:

colors=['Red','purple','Green','blue']

print(sorted(colors,key=str.capitalize))

Out:['blue','Green','purple','Red']

還有一個主要原因就是:lambda函數(shù)沒有函數(shù)名稱。所以在代碼交接,項目移植的場景中會給團隊帶來很多困難,多寫個函數(shù)add_one()沒什么壞處,因為大家都很容易理解,知道它是執(zhí)行+1的功能,但是如果團隊里你在自己負責的模塊使用了很多l(xiāng)ambda,會給其他人理解帶來很多麻煩

適合lambda的場景

話又說回來,存在即合理,那么真正需要我們使用lambda的是哪些場景呢:

你需要的方法是很簡單的(+1,字符串拼接等),該函數(shù)不值得擁有一個名字使用lambda表達式,會比我們能想到的函數(shù)名稱更容易理解除了lambda,沒有任何python提供的函數(shù)可以實現(xiàn)目的團隊中所有成員都掌握lambda,大家同意你用

還有一種場景非常適用,就是在給其他人制造自己很專業(yè)的錯覺時,比如:

哎呀,小老弟,聽說你學了Python,知道lambda不?沒聽過?不行啊,白學了!

來來來,讓我給你講講。。。此處省略1萬字

總結

今天為大家九淺一深地講解了lambda的用法和使用場景,所謂九淺一深,就是90%情況下用于創(chuàng)建簡單的匿名函數(shù),10%的情況稍微復雜(我這個借口找的太好了)

總而言之就是,任何事情都具有兩面性,我們在使用lambda之前應該先停下來,問問自己是不是真的需要它。

當然,如果需要和別人忽悠的時候都是正反一張嘴,lambda是好是壞全看我們自己怎么說,吹牛時請遵守如下原則,屢試不爽:

如果你說一個女大學生晚上賣淫就是可恥,但如果改成一個妓女利用業(yè)余時間努力學習就勵志多了!

lambda也是如此

apply函數(shù)

Python中apply函數(shù)的格式為:apply(func,*args,**kwargs)

當然,func可以是匿名函數(shù)。

用途:當一個函數(shù)的參數(shù)存在于一個元組或者一個字典中時,用來間接的調(diào)用這個函數(shù),并將元組或者字典中的參數(shù)按照順序傳遞給參數(shù)

解析:args是一個包含按照函數(shù)所需參數(shù)傳遞的位置參數(shù)的一個元組,簡單來說,假如A函數(shù)的函數(shù)位置為A(a=1,b=2),那么這個元組中就必須嚴格按照這個參數(shù)的位置順序進行傳遞(a=3,b=4),而不能是(b=4,a=3)這樣的順序。kwargs是一個包含關鍵字參數(shù)的字典,而其中args如果不傳遞,kwargs需要傳遞,則必須在args的位置留空。

apply的返回值就是函數(shù)func函數(shù)的返回值。

?舉例

deffunction(a,b):

print(a,b)

apply(function,('good','better'))

apply(function,(2,3+6))

apply(function,('cai','quan'))

apply(function,('cai',),{'b':'caiquan'})

apply(function,(),{'a':'caiquan','b':'Tom'})

輸出結果:

(good,better)

(2,9)

(cai,quan)

(cai,caiquan)

(caiquan,Tom)

對數(shù)據(jù)進行預處理時,大家使用比較多的是apply函數(shù),apply函數(shù)是pandas庫中的函數(shù),非常好用的一個函數(shù)相當于循環(huán)遍歷,起到對每一條數(shù)據(jù)進行處理的效果,函數(shù)的參數(shù)可能是DataFrame中的行或者列。

說到apply又不得不說lambda函數(shù)了,這兩個結合來用簡直爽的不行。

lambda關鍵字可以用來創(chuàng)建一個小的匿名函數(shù)

示例:

DataFrame.apply(func,axis=0,broadcast=False,raw=False,

reduce=None,args=(),*kwds)

第一個參數(shù)func是一個函數(shù),需要自己實現(xiàn),可以使用lambda匿名函數(shù),axis默認值為0,axis為0時,會把一列的數(shù)據(jù)進行遍歷。

data[‘cut_review'].apply(lambdax:[iforiinxsifinotinstopwords])

?下面的例子是DataFrame中apply的用法

#函數(shù)應用和映射

importnumpyasnp

importpandasaspd

df=pd.DataFrame(np.random.randn(4,3),columns=list('bde'),index=['utah','ohio','texas','oregon'])

print(df)

bde

utah-0.6679691.9748010.738890

ohio-0.896774-0.7909140.474183

texas0.0434760.890176-0.662676

oregon0.701109-2.238288-0.154442

#將函數(shù)應用到由各列或行形成的一維數(shù)組上。DataFrame的apply方法可以實現(xiàn)此功能

f=lambdax:x.max()-x.min()

#默認情況下會以列為單位,分別對列應用函數(shù)

t1=df.apply(f)

print(t1)

t2=df.apply(f,axis=1)

print(t2)

b1.597883

d4.213089

e1.401566

dtype:float64

utah2.642770

ohio1.370957

texas1.552852

oregon2.939397

dtype:float64

#除標量外,傳遞給apply的函數(shù)還可以返回由多個值組成的Series

deff(x):

returnpd.Series([x.min(),x.max()],index=['min','max'])

t3=df.apply(f)

#從運行的結果可以看出,按列調(diào)用的順序,調(diào)用函數(shù)運行的結果在右邊依次追加

print(t3)

bde

min-0.896774-2.238288-0.662676

max0.7011091.9748010.738890

#元素級的python函數(shù),將函數(shù)應用到每一個元素

#將DataFrame中的各個浮點值保留兩位小數(shù)

f=lambdax:'%.2f'%x

t3=df.applymap(f)

print(t3)

bde

utah-0.671.970.74

ohio-0.90-0.790.47

texas0.040.89-0.66

oregon0.70-2.24-0.15

#注意,之所以這里用map,是因為Series有一個元素級函數(shù)的map方法。而dataframe只有applymap。

t4=df['e'].map(f)

溫馨提示

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

最新文檔

評論

0/150

提交評論