欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何分析Python中的Lambda和Map及Reduce

這篇文章給大家介紹如何分析Python中的Lambda和Map及Reduce,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)主要業(yè)務(wù)有網(wǎng)站營銷策劃、網(wǎng)站建設(shè)、成都網(wǎng)站制作、微信公眾號開發(fā)、小程序設(shè)計H5技術(shù)、程序開發(fā)等業(yè)務(wù)。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當(dāng)客戶,還把客戶視為我們的合作伙伴,在開展業(yè)務(wù)的過程中,公司還積累了豐富的行業(yè)經(jīng)驗、營銷型網(wǎng)站建設(shè)資源和合作伙伴關(guān)系資源,并逐漸建立起規(guī)范的客戶服務(wù)和保障體系。 

今天要和大家分享的是Python匿名函數(shù)(anonymous functions),也叫l(wèi)ambda函數(shù)。匿名函數(shù)的意思就是說這個函數(shù)沒有顯式的函數(shù)名,因為一般在Python中定義函數(shù)的時候都是這個樣子的,def function_name(參數(shù)列表): balabalaba。暫且把具有function_name的函數(shù)稱作常規(guī)函數(shù),而匿名函數(shù)就稱作lambda函數(shù)。匿名函數(shù)沒有顯式的函數(shù)名,但是有顯式的lambda標(biāo)志,寫了lambda的函數(shù)就可以稱作匿名函數(shù)。一般情況大家不愿意用匿名函數(shù)(因為他

們不會用!),但是無論是Python的書還是網(wǎng)絡(luò)教程,都會講這個,而且是開始比較基礎(chǔ)的部分,而匿名函數(shù)剛開始學(xué)又比較抽象,所以有必要給大家安利一下這個坑到底是什么!下面開始栗子講解.

# lambda 

"""
>>> def function_1(x, y):
      return x + y

>>> function_2 = lambda x,y: x + y
>>>
>>> function_1(1,2)
3
>>> function_2(1,2)
3
"""

通過這個栗子我們發(fā)現(xiàn),function_1和function_2都可以用相同方式來調(diào)用。

區(qū)別在于匿名函數(shù)沒有return語句,而匿名函數(shù)的返回值就是它定義的表達(dá)式。

匿名函數(shù)的生存周期就是在當(dāng)前行,就是在那定義的,就在那里用,過了這村,后面就再不用他了。這也暗示了匿名函數(shù)為啥沒有函數(shù)名,因為不會再用它啊,取個名字也是浪費感情。

# map()函數(shù)說明

一般和lambda表達(dá)式同時出現(xiàn)的還有map和reduce函數(shù),接下來我們再看看

這是什么鬼。你可能聽說過Hadoop里面的Map-Reduce過程,這里的和那個的

原理是類似的。map的意思不太好翻譯,這樣理解一下,有一個函數(shù)A,一個需要計算的對象B,把A map一下到B那么都對B里的每一個元素都使用了函數(shù)A。

接下來舉個計算三角函數(shù)值的栗子。

import math
def function_5(x):
   return math.sin(x)

>>> list_1 = [-math.pi/4, math.pi/4]
>>> map(function_5, list_1)
[-0.7071067811865475, 0.7071067811865475]

如果我們不用常規(guī)函數(shù),而是用lambda表達(dá)式,則

>>> map(lambda x: math.sin(x), list_1)

原來要用3行的代碼,現(xiàn)在只要1行就可以搞定。

# reduce函數(shù)

如果我們直接reduce剛才定義的函數(shù),看下會發(fā)生什么。

>>> reduce(function_5, list_a)

Traceback (most recent call last):
 File "<pyshell#22>", line 1, in <module>
   reduce(function_5, list_a)
TypeError: function_5() takes exactly 1 argument (2 given)

TypeError,類型錯誤,它說function_5本來只要1個參數(shù),而你給了2個。

哪里來的兩個?因為我們的list_1中有2個元素,就是這么來的。

# reduce的語法是:

reduce(function, seq)

reduce會根據(jù)function的表達(dá)式,來依次計算seq中的元素。

還是舉個栗子好了。

>>> reduce(lambda x,y: x+y, [47,11,42,13])
113
113 <== (((47 + 11) + 42) + 13)
# 計算一下1到100的和。
>>> reduce(lambda x, y: x+y, range(1,101))
5050

剛才我們的map函數(shù)返回值是多個,而reduce則只返回一個值。注意這里的區(qū)別。

# 是不是很簡單 ?

在Python 3里面,reduce函數(shù)被放到了functools模塊里面,要用的話,需要from functools import reduce。

關(guān)于如何分析Python中的Lambda和Map及Reduce就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

分享名稱:如何分析Python中的Lambda和Map及Reduce
分享路徑:http://www.chinadenli.net/article28/ighocp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計微信公眾號用戶體驗自適應(yīng)網(wǎng)站企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)