幾個(gè)特殊的函數(shù)(待補(bǔ)充)
python/272958.html">python/268158.html">python/286131.html">python是支持多種范型的語(yǔ)言,可以進(jìn)行所謂函數(shù)式編程,其突出體現(xiàn)在有這么幾個(gè)函數(shù): filter、map、reduce、lambda、yield
lambda
>>> g = lambda x,y:x+y #x+y,并返回結(jié)果>>> g(3,4)7>>> (lambda x:x**2)(4) #返回4的平方16
lambda函數(shù)的使用方法:
在lambda后面直接跟變量
變量后面是冒號(hào)
冒號(hào)后面是表達(dá)式,表達(dá)式計(jì)算結(jié)果就是本函數(shù)的返回值
冒號(hào)后面是表達(dá)式,表達(dá)式計(jì)算結(jié)果就是本函數(shù)的返回值
比如,要打印一個(gè)list,里面依次是某個(gè)數(shù)字的1次方,二次方,三次方,四次方。用lambda可以這樣做:
>>> lamb = [ lambda x:x,lambda x:x**2,lambda x:x**3,lambda x:x**4 ]>>> for i in lamb:... print i(3),... 3 9 27 81
map
map()是python的一個(gè)內(nèi)置函數(shù),它的基本樣式是:
map(func,seq)
func是一個(gè)函數(shù),seq是一個(gè)序列對(duì)象。在執(zhí)行的時(shí)候,序列對(duì)象中的每個(gè)元素,按照從左到右的順序,依次被取出來(lái),并放入
到func那個(gè)函數(shù)里面,并將func的返回值依次存到一個(gè)list中。如
>>> items = [1,2,3,4,5]>>> squared = []>>> for i in items:... squared.append(i**2)... >>> squared[1, 4, 9, 16, 25]>>> def sqr(x): return x**2... >>> map(sqr,items)[1, 4, 9, 16, 25]>>> map(lambda x: x**2, items)[1, 4, 9, 16, 25]>>> [ x**2 for x in items ] #這個(gè)我最喜歡了,一般情況下速度足夠快,而且可讀性強(qiáng)[1, 4, 9, 16, 25]
要點(diǎn):
對(duì)iterable中的每個(gè)元素,依次應(yīng)用function的方法(本質(zhì)上就是一個(gè)for循環(huán))
將所有結(jié)果返回一個(gè)list
如果參數(shù)很多,則對(duì)那些參數(shù)并行執(zhí)行function
繼續(xù)下面兩個(gè)例子:
>>> lst1 = [1,2,3,4,5]>>> lst2 = [6,7,8,9,0]>>> map(lambda x,y: x+y, lst1,lst2) #將兩個(gè)列表中的對(duì)應(yīng)項(xiàng)加起來(lái),并返回一個(gè)結(jié)果列表[7, 9, 11, 13, 5]
>>> lst1 = [1,2,3,4,5]>>> lst2 = [6,7,8,9,0]>>> lst3 = [7,8,9,2,1]>>> map(lambda x,y,z: x+y+z, lst1,lst2,lst3)[14, 17, 20, 15, 6]
可以看到map函數(shù)的強(qiáng)大和簡(jiǎn)潔。如果使用for循環(huán)將會(huì)很繁瑣
reduce
直接看例子:
>>> reduce(lambda x,y: x+y,[1,2,3,4,5])15
reduce函數(shù)的計(jì)算方式是將列表中的元素累加,((((1+2)+3)+4)+5)=15 與map函數(shù)相比較就可以看出兩者之間的區(qū)別。map是上下運(yùn)算,reduce是橫著逐個(gè)元素進(jìn)行運(yùn)算。
reduce含可以接受第三個(gè)值作為初始值:例如
>>> reduce(lambda x,y: x+y,[1,2,3,4,5],100)115
上述列表中計(jì)算將以100為初始值執(zhí)行累加計(jì)算,先計(jì)算 100+1
filter
filter的中文含義是“過(guò)濾器”,在python中,它就是起到了過(guò)濾器的作用.
通過(guò)下面代碼體會(huì):
>>> numbers = range(-5,5)>>> numbers[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]>>> filter(lambda x: x>0, numbers) [1, 2, 3, 4]>>> [x for x in numbers if x>0] #與上面那句等效[1, 2, 3, 4]>>> filter(lambda x: x > 3, [1,2,3,4,5]) [4,5]
拜讀下filter的官方文檔解釋?zhuān)?/p>
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.
總結(jié)
以上就是本文關(guān)于簡(jiǎn)單了解Python中的幾種函數(shù)的全部?jī)?nèi)容,希望對(duì)大家有所幫助。有什么問(wèn)題可以隨時(shí)留言,小編會(huì)及時(shí)回復(fù)大家的。
新聞熱點(diǎn)
疑難解答
圖片精選