python高阶函数、map reduce 自己如何去定义_小猿圈python之高阶函数lambda、map和reduce用法...
python有很多內(nèi)置函數(shù),內(nèi)置函數(shù)封裝了很多功能,讓我們用起來(lái)很方便,小猿圈針對(duì)高階函數(shù)有詳細(xì)的講解視頻,朋友們可以去看看,小編學(xué)后總結(jié)了一下,下面說(shuō)一下lambda、map和reduce高階函數(shù)的用法。
1、lambda函數(shù)
lambda是匿名函數(shù),lambda語(yǔ)句中,冒號(hào)前是參數(shù),可以有多個(gè),用逗號(hào)隔開(kāi),冒號(hào)右邊的返回值(相當(dāng)于return)。
lambda語(yǔ)句構(gòu)建的其實(shí)是一個(gè)函數(shù)對(duì)象,感受一下 lambda 匿名函數(shù)和普通函數(shù)的區(qū)別:
--普通函數(shù):
1 def f(i): # 用戶(hù)自定義返回平方數(shù)
2 return ii
3 print(f(2))
--匿名函數(shù)
g = lambda x : xx # lambda 匿名函數(shù)
print(g(2))
看出來(lái)區(qū)別了嗎? lambda 函數(shù)和普通的函數(shù)相比,就是省去了函數(shù)名稱(chēng),同時(shí)這樣的匿名函數(shù),不能共享在別的地方調(diào)用,也有很多別的方法能夠代替lambda,那lambda函數(shù)有什么優(yōu)點(diǎn)呢?
省去定義函數(shù)的過(guò)程,快速定義單行的最小函數(shù),讓代碼更加精簡(jiǎn)
不需要復(fù)用的函數(shù),無(wú)須定義函數(shù)名稱(chēng)
和 filter map reduce 結(jié)合使用,更優(yōu)雅
lambda 函數(shù)可包含多個(gè)參數(shù),例如:
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函數(shù)
map()函數(shù)接收兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是可迭代對(duì)象(Iterable),map將傳入的函數(shù)依次作用到序列的每個(gè)元素,并把結(jié)果作為新的可迭代對(duì)象返回。
實(shí)例:
L=[1,2,3,4]
def pow2(x):
return x*x
list(map(pow2,L))
運(yùn)行結(jié)果:[1,4,9,16]
map和lambda匿名函數(shù)一同使用:
list(map(lambda x:x**2,[1,2,3,4,5]))#使用lambda匿名函數(shù)
3、reduce函數(shù)
reduce 函數(shù)在 3.x 版本不是內(nèi)建函數(shù)了,reduce()函數(shù)已經(jīng)被從全局名字空間里移除了,它現(xiàn)在被放置在fucntools模塊里,用的話(huà)要 先引入
from functools import reduce
reduce 函數(shù)中的function參數(shù)是一個(gè)有兩個(gè)參數(shù)的函數(shù),reduce依次從 sequence 中取一個(gè)元素,和上一次調(diào)用 function 的結(jié)果做參數(shù)再次調(diào)用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)
結(jié)果:21
l = [1,2,3,4,5,6]
l = reduce(lambda x,y:x+y,l) # 結(jié)合lambda
print(l)
help(reduce) # 查看 reduce 幫助
這三個(gè)個(gè)高階函數(shù)運(yùn)用的地方也很多,一般匿名函數(shù)lambda和map、filter、reduce組合用的比較多,這只是簡(jiǎn)單的用法,想要深入了解高階函數(shù),可以去小猿圈學(xué)習(xí)一下,alex老師講的很透徹,小編聽(tīng)后做的總結(jié),有問(wèn)題可以給小編留言,我們可以探討學(xué)習(xí)。
總結(jié)
以上是生活随笔為你收集整理的python高阶函数、map reduce 自己如何去定义_小猿圈python之高阶函数lambda、map和reduce用法...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java继承_java练习本(20190
- 下一篇: pythoncsv文件处理_Python