這篇主要是複習一下
lambda表示式是一種匿名函式,對應python中的自定義函式def。定義func函式,計算給定數x的平方
def
func
(x):
return x*x
等價於
func =
lambda x: x*x
用法,他就是乙個函式,像正常函式那樣呼叫就好:
func(6
)
可以看到,lambda只不過是定義函式的一種高階寫法,lambda簡化了函式定義的書寫形式。**更為簡潔。對於有些函式我們只用一次的,用lambda就十分友好,連函式名都沒有。
lambda表示式返回乙個函式,這個函式可以作為其他函式的引數。說起lambda,一般都是下面這個三個函式使用,常用的可以與lambda組合的內建函式有map(), filter(), reduce()。(注:python3全域性命名空間中移除了reduce函式)
map() 會根據提供的函式對指定序列做對映。
reduce() 函式會對引數序列中元素進行累積。
自 python3 之後,reduce函式從全域性命名空間中移除,放在了 functools模組,因為如果想正確執行,必須先導入
lambda表示式中可以插入if…else進行條件判斷,如
注意: if為真時的返回結果在if前面,條件在後面:(自己手打一下下面的程式就知道了)
f = lambda x:
'even'
if x%2==
0else
'odd'
# f(3)輸出結果 odd
等價於
def f
(x):
if x%2==
0:return
'even'
else
:return
'odd'
注意如果在lambda中使用if進行條件判斷,則else是必須宣告的,否則會引起報錯。如果不返回結果可以用 else none 表示。
import pandas as pd
df = pd.dataframe(
)df[
'pass'
]= df.
(lambda x:
'pass'
if x[1]
>=
60else
'not pass'
, axis=1)
#輸出新列 'pass',根據成績判斷通過與否,輸出df後結果為:
age score pass022
87pass121
66pass222
79pass321
54 not pass420
59 not pass
x為dataframe物件,當引數axis=1時,x[1]等於第二列。
當用於series物件時,以上**等價於:
df[
'pass'
]= df[
'score'].
(lambda x:
'pass'
if x>
60else
'not pass'
)
不需要定義函式名(匿名函式)
**簡潔美觀
適用於定義簡單的計算
只有乙個表示式,不適用於複雜的計算
不夠直觀,難於理解,增加了維護成本
《三分鐘理解大小端》
無論筆試還是面試都有一定機率問怎麼判斷大小端,那麼你就很自豪的回答,大端就是資料高位元組放在低位址上,小端就是資料低位元組放在低位址上。好了您回答了這個恭喜下面讓你 實現一下,這個時候很多只是死記硬背的缺陷就會暴露出來。其實 的實現很多方法都是可以的,下面舉例最簡單的一種,就是初始化乙個16進製制的...
三分鐘理解依賴注入
如果在 class a 中,有 class b 的例項,則稱 class a 對 class b 有乙個依賴。例如下面類 human 中用到乙個 father 物件,我們就說類 human 對類 father 有乙個依賴。public class hunman 仔細看這段 我們會發現存在一些問題 1...
三分鐘理解知識蒸餾
知識蒸餾的意義 能夠壓縮模型,提公升模型效能 為什麼能夠壓縮模型?誰知道了告訴我一下!為什麼能提公升模型精度?栗子 分類問題有三個分類 貓,狗,烏龜,實際訓練過程中,比如當前的資料真實標籤是 貓,模型 出貓,狗,烏龜的概率分別是0.6,0.3,0.1,傳統思路 不錯,識別對了,貓的概率最高,給模型一...