新聞中心
匿名函數(shù)(lambda表達(dá)式)
在Python中,函數(shù)可以算的上是“一等公民”了,我們先回顧下函數(shù)的優(yōu)點(diǎn):
成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)華池,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):028-86922220
- 減少代碼重復(fù)量
- 模塊化代碼
但是我們有沒(méi)有想過(guò),如果我們需要一個(gè)函數(shù),比較簡(jiǎn)短,而且只需要使用一次(無(wú)需重復(fù)調(diào)用),那還需要定義一個(gè)有名字的函數(shù)么?
答案是否定的,這里我們就可以使用匿名函數(shù)來(lái)實(shí)現(xiàn)這樣的功能。
我們先看看求一個(gè)數(shù)的平方,我們定義個(gè)函數(shù)怎么寫(xiě):
def square(x):
return x**2
square(3)
而lambda表達(dá)式就可以這樣寫(xiě):
square = lambda x: x**2
square(3)
根據(jù)上面的例子,其實(shí)lambda表達(dá)式使用還是很簡(jiǎn)單的,如下:
lambda argument1, argument2,.....: expression
接下來(lái),介紹的map、filter和reduce函數(shù),與lambda表達(dá)式結(jié)合使用,才能發(fā)揮其強(qiáng)大的作用了。
map函數(shù)
map函數(shù)的使用如下:
map(function, iterable)
其作用是,對(duì)iterable的每個(gè)元素,都運(yùn)用function這個(gè)函數(shù),最后返回新的可遍歷的集合。
a = [1,2,3,4,5]
b = map(lambda x: x*2,a)
print(list(b))
# [2, 4, 6, 8, 10]
filter函數(shù)
filter函數(shù)的使用如下:
filter(function, iterable)
其作用是,對(duì)iterable的每個(gè)元素,都運(yùn)用function這個(gè)函數(shù)進(jìn)行判斷,最后返回全部為T(mén)rue的新的可遍歷的集合。
'''
學(xué)習(xí)中遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流群:
尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書(shū)!
'''
a = [1,2,3,4,5,6]
b = filter(lambda x :x%2 ==0, a)
print(list(b))
# [2, 4, 6]
reduce函數(shù)
reduce函數(shù)的使用如下:
reduce(function, iterable)
function規(guī)定有兩個(gè)參數(shù),表示對(duì)iterable每個(gè)元素和上一次運(yùn)算的結(jié)果,進(jìn)行function運(yùn)算,最后得到一個(gè)值,這里要注意,我們需要從functools中導(dǎo)入reduce。
from functools import reduce
a = [1,2,3,4]
b = reduce(lambda x,y: x*y,a)
print(b)
# 24 1*2*3*4
總結(jié)
- lambda表達(dá)式
- map、filter和reduce函數(shù)
分享題目:Python教程:幾個(gè)常用的內(nèi)置函數(shù)
標(biāo)題來(lái)源:http://fisionsoft.com.cn/article/dsogpjg.html