小猿圈python之高階函數lambda、map和reduce用法

python有很多內置函數,內置函數封裝了很多功能,讓我們用起來很方便,小猿圈針對高階函數有詳細的講解視頻,朋友們可以去看看,小編學後總結了一下,下面說一下lambda、map和reduce高階函數的用法。

1、lambda函數

lambda是匿名函數,lambda語句中,冒號前是參數,可以有多個,用逗號隔開,冒號右邊的返回值(相當於return)。

lambda語句構建的其實是一個函數對象,感受一下 lambda 匿名函數和普通函數的區別:

--普通函數:

1 def f(i): # 用戶自定義返回平方數
2 return i*i
3 print(f(2))
--匿名函數
g = lambda x : x*x # lambda 匿名函數
print(g(2))

看出來區別了嗎? lambda 函數和普通的函數相比,就是省去了函數名稱,同時這樣的匿名函數,不能共享在別的地方調用,也有很多別的方法能夠代替lambda,那lambda函數有什麼優點呢?

1. 省去定義函數的過程,快速定義單行的最小函數,讓代碼更加精簡

2. 不需要復用的函數,無須定義函數名稱

3. 和 filter map reduce 結合使用,更優雅

lambda 函數可包含多個參數,例如:

1 def f(x,y):
2 return x+y
3 print(f(1,4))
4 g = lambda x,y : x+y
5 print(g(1,4))

2、map函數

map()函數接收兩個參數,一個是函數,一個是可迭代對象(Iterable),map將傳入的函數依次作用到序列的每個元素,並把結果作為新的可迭代對象返回。

實例:

L=[1,2,3,4]
def pow2(x):
return x*x
list(map(pow2,L))
運行結果:[1,4,9,16]

map和lambda匿名函數一同使用:

list(map(lambda x:x**2,[1,2,3,4,5]))#使用lambda匿名函數

3、reduce函數

reduce 函數在 3.x 版本不是內建函數了,reduce()函數已經被從全局名字空間里移除了,它現在被放置在fucntools模塊里,用的話要 先引入

from functools import reduce

reduce 函數中的function參數是一個有兩個參數的函數,reduce依次從 sequence 中取一個元素,和上一次調用 function 的結果做參數再次調用function。

例如:

1
2 from functools import reduce # 3.x 版本須引入
3 def sum_a(x,y):
4 return x+y
5 l = [1,2,3,4,5,6]
6 l = reduce(sum_a,l)
7 print(l)

結果:21

l = [1,2,3,4,5,6]
l = reduce(lambda x,y:x+y,l) # 結合lambda
print(l)
help(reduce) # 查看 reduce 幫助

這三個個高階函數運用的地方也很多,一般匿名函數lambda和map、filter、reduce組合用的比較多,這只是簡單的用法,想要深入了解高階函數,可以去小猿圈學習一下,alex老師講的很透徹,小編聽後做的總結,有問題可以給小編留言,我們可以探討學習。


推薦閱讀:

TAG:Python入門 | Python開發 | Python |