python高阶函数、map reduce 自己如何去定义_小猿圈python之高阶函数lambda、map和reduce用法...
python有很多內置函數,內置函數封裝了很多功能,讓我們用起來很方便,小猿圈針對高階函數有詳細的講解視頻,朋友們可以去看看,小編學后總結了一下,下面說一下lambda、map和reduce高階函數的用法。
1、lambda函數
lambda是匿名函數,lambda語句中,冒號前是參數,可以有多個,用逗號隔開,冒號右邊的返回值(相當于return)。
lambda語句構建的其實是一個函數對象,感受一下 lambda 匿名函數和普通函數的區別:
--普通函數:
1 def f(i): # 用戶自定義返回平方數
2 return ii
3 print(f(2))
--匿名函數
g = lambda x : xx # lambda 匿名函數
print(g(2))
看出來區別了嗎? lambda 函數和普通的函數相比,就是省去了函數名稱,同時這樣的匿名函數,不能共享在別的地方調用,也有很多別的方法能夠代替lambda,那lambda函數有什么優點呢?
省去定義函數的過程,快速定義單行的最小函數,讓代碼更加精簡
不需要復用的函數,無須定義函數名稱
和 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老師講的很透徹,小編聽后做的總結,有問題可以給小編留言,我們可以探討學習。
總結
以上是生活随笔為你收集整理的python高阶函数、map reduce 自己如何去定义_小猿圈python之高阶函数lambda、map和reduce用法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java继承_java练习本(20190
- 下一篇: full outer join 与ful