轉載:新手學習用,請博主原諒。(lambda,map,filter,reduce函式的用法)
阿新 • • 發佈:2018-11-09
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