1. 程式人生 > >轉載:新手學習用,請博主原諒。(lambda,map,filter,reduce函式的用法)

轉載:新手學習用,請博主原諒。(lambda,map,filter,reduce函式的用法)

1. lambda()匿名函式

a = lambda x: x*x
print a(2)
#輸出結果為:
#4
``
關鍵字 lambda 表示匿名函式,冒號前面的 x 表示函式引數 
匿名函式有個限制,只能有一個表示式,不用寫 return,返回值就是該表示式的結果。 
也可以把匿名函式賦值給一個返回值:

def fun(x,y):
return lambda:x*y

  使用lambda()函式可以簡化程式碼,如果使用def定義函式,每次呼叫的時候還需要回頭找到該函式,如果這個函式程式執行中僅用到一兩次,使用lambda()代替的話可以大大簡化程式。

**2. filter()函式**
  以下是Python中對filter()函式的介紹:

filter(...)
    filter(function or None, sequence) -> list, tuple, or string

    Return those items of sequence for which function(item) is true.  If
    function is None, return the items that are true.  If sequence is a tuple
    or string, return the same type, else return a list.

filter()函式的引數為一個函式和一個序列,把傳入的函式依次作用於每個元素,然後根據返回值是True還是False判斷是保留還是丟棄該元素。filter()函式返回的是一個迭代器Iterator。舉個例子:

刪掉一個 list 中的偶數,只保留奇數,可以寫為:

def is_odd(n):
return n % 2 == 1
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
#輸出結果為:
#>>>[1,3,5,9]

利用 lambda 表示式,也可以寫成:

list(filter(lambda x:n%2==1, [1, 2, 4, 5, 6, 9, 10, 15])))
#>>>1



**3. map()函式**
  map(函式名, Iterable),map()函式將傳入的函式依次作用到序列的每個元素,並把結果作為新的iterator返回。 
例:有一個函式f(x)=x2f(x)=x2,要把該函式作用在一個list=[1,2,3,4,5,6,7,8]上,可用map()函式實現如下:

def fun(x):
return x*x
list(map(fun,[1,2,3,4,5,6,7,8]))
#輸出結果為:
#>>>[1, 4, 9, 16, 25, 36, 49, 64]


使用lambda()函式實現如下:

list(map(lambda x: x*x,[1,2,3,4,5,6,7,8]))
#>>>1



  利用map()函式將[‘lily’,’JACK’,’mAriN’]這三個名字規範化輸出,即除了首字母大寫,其他均小寫。

def normalize(name):
return name[0].upper+name[1:].lower
Name = [‘lily’,‘JACK’,‘mAriN’]
print (list(map(normalize,Name)))
#輸出結果為:
#>>>[‘Lily’,‘Jack’,‘Marin’]



--------------------- 
作者:Easy_ray 
來源:CSDN 
原文:https://blog.csdn.net/c369624808/article/details/78988930?utm_source=copy 
版權宣告:本文為博主原創文章,轉載請附上博文連結!主原創文章,未經博主允許不得轉載。	https://blog.csdn.net/c369624808/article/details/78988930