1. 程式人生 > >python中lambda表示式的使用以及兩個BIF即filter()和map()的使用

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]