python中lambda表示式的使用以及兩個BIF即filter()和map()的使用
1.lambda表示式
作用:在用python寫一些執行指令碼時,使用lambda就可以省下定義函式過程,比如我們只是需要寫一個簡單的指令碼來管理伺服器時間,我們就不需要專門定義一個函式然後再寫呼叫,使用lambda就可以使的程式碼更加簡潔
對於一些比較抽象並且整個程式使用下來只需要呼叫一兩次的函式,有時候給函式起個名字也是比較頭疼的問題,使用lambda就不需要考慮命名的問題了
簡化程式碼可讀性,由於普通的函式閱讀經常要跳到開頭def定義部分,使用lambda函式可以省去這樣的步驟。
例如
用函式來寫: >>> def ds(x):
return 2*x+1
>>> ds(5)
11
用lambda表示式來寫: >>> g = lambda x:2*x+1
>>> g(5)
11
2.filter()的使用
可以稱為過濾器,用法:
filter(function or None,iterable)如果第一個引數是函式的話,則將第二個可迭代資料裡的每個元素作為函式的引數進行計算,把返回true的值給篩選出來,併為一個列表,如果第一個引數是None,則將第二個引數裡面的true的值篩選出來
例:>>> filter(None,[1,0,False,True])
<filter object at 0x0000020C12F43AC8>
>>> list(filter(None,[1,0,False,True]))
[1, True]
>>> def odd(x):
return x%2
>>> temp=range(10)
>>> show=filter(odd,temp)
>>> list(show)
[1, 3, 5, 7, 9]
>>> list(filter(lambda x:x%2,range(10)))
[1, 3, 5, 7, 9]
3.map()的使用
意思為對映,有兩個引數,一個是函式,一個可迭代的序列,該BIF的功能是將序列的每一個元素作為函式的引數進行運算加工,直到可迭代序列的每個元素都加工完畢,返回所有加工後的元素構成新序列
>>> list(map(lambda x:x*2,range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]