lambda表達(dá)式

1. 定義lambda表達(dá)式

  • lambda表達(dá)式又稱匿名函數(shù),常用來表示內(nèi)部僅包含1行表達(dá)式的函數(shù)嗡善,語法格式如下:
func = lambda [arg1[, arg2,... argN]]: expression

func是一個變量蜗字,引用lambda定義的函數(shù)對象
lambda是關(guān)鍵字
[arg1[, arg2,... argN]]是可選參數(shù)晚吞,等同于定義函數(shù)時要指定的參數(shù)列表
expression是一行表達(dá)式,其運(yùn)算結(jié)果就是函數(shù)的返回值

  • 轉(zhuǎn)換成def函數(shù)語法如下:
def func([arg1[, arg2,... argN]]):
      return expression
  • 舉例:設(shè)計(jì)求兩個數(shù)之和
# 普通函數(shù)的方式
def add(x, y):
    return x+y
print(add(3, 4))

# lambda表達(dá)式
add1 = lambda x, y: x+y
print(add1(3, 4))

2. lambda表達(dá)式與def函數(shù)區(qū)別

  • lambda可以定義一個匿名函數(shù)埋酬,而def定義的函數(shù)必須有一個名字
  • lambda是一個表達(dá)式,而不是一個語句烧栋。因此能夠出現(xiàn)在python語法不允許def出現(xiàn)的地方写妥。例如,在一個列表常量中审姓,或者函數(shù)調(diào)用的參數(shù)中
  • lambda的主體是一個單個的表達(dá)式珍特,而不是一個代碼塊。lambda包含的代碼相當(dāng)于def中return子句后的代碼魔吐,只能是簡單的表達(dá)式扎筒,所以說lambda的能力小于def,在lambda中只能使用簡單的語法酬姆,不能使用if else while return等語句

3. 相比def函數(shù)嗜桌,lambda表達(dá)式的優(yōu)勢

  • 對于單行函數(shù),使用lambda表達(dá)式可以省去定義函數(shù)的過程辞色,讓代碼更加簡潔
  • 對于不需要多次復(fù)用的函數(shù)骨宠,使用lambda表達(dá)式可以在用完后立即釋放,提高程序執(zhí)行的性能

4. 應(yīng)用

filter()

篩選100以內(nèi)的3的倍數(shù)相满,并生成一個列表

# lambda表達(dá)式實(shí)現(xiàn)
l = list(filter(lambda x: True if x % 3 == 0 else False, range(100)))
print(l)
# def函數(shù)實(shí)現(xiàn)
def f(x):
    if x % 3 == 0:
        return True
    else:
        return False
l = list(filter(f, range(100)))
print(l)
"""
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
"""

filter()簡單的理解為過濾器层亿,它需要兩個參數(shù),function和一個序列(字符串立美、列表匿又、元組都是序列),過濾器會依次將序列的值傳入function中悯辙,如果返回True的話琳省,將其重新生成一個列表返回。

map()

# def函數(shù)實(shí)現(xiàn)
li = [11, 22, 33]
sl = [1, 2, 3]
def f(a, b):
    return a+b
l1 = map(f, li, sl)
print(list(l1))

# lambda表達(dá)式實(shí)現(xiàn)
l2 = map(lambda a, b: a+b, li, sl)
print(list(l2))
"""
[12, 24, 36]
[12, 24, 36]
"""

map()表示映射躲撰,它需要兩個參數(shù)针贬,function和一個序列(字符串、列表拢蛋、元組都是序列)桦他,也是將序列放入函數(shù)進(jìn)行運(yùn)算,不論運(yùn)算結(jié)果是什么,map()都將逐一反饋

reduce()

對序列內(nèi)元素進(jìn)行累加((((1+2)+3)+4)+5)

from functools import reduce

# def函數(shù)實(shí)現(xiàn)
li = [1, 2, 3, 4, 5]
def f(a, b):
    return a+b
l1 = reduce(f, li)
print(l1)

# lambda表達(dá)式實(shí)現(xiàn)
l2 = reduce(lambda a, b: a+b, li)
print(l2)
"""
15
15
"""

對序列內(nèi)元素進(jìn)行階乘((((1*2)*3)*4)*5)

# def函數(shù)實(shí)現(xiàn)
def f(a, b):
    return a*b
l1 = reduce(f, range(1, 6))
print(l1)

# lambda表達(dá)式實(shí)現(xiàn)
l2 = reduce(lambda a, b: a*b, range(1, 6))
print(l2)
"""
120
120
"""

reduce()表示累計(jì)快压,它需要兩個參數(shù)圆仔,function和一個序列(字符串、列表蔫劣、元組都是序列)坪郭,也是將序列放入函數(shù)進(jìn)行累計(jì)運(yùn)算

sort()

根據(jù)每個元組的第一個元素進(jìn)行排序

a = [(4, 1), (1, 2),  (9, 10), (13, -3)]
a.sort(key=lambda x: x[0])
print(a)
"""
[(1, 2), (4, 1), (9, 10), (13, -3)]
"""

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市脉幢,隨后出現(xiàn)的幾起案子歪沃,更是在濱河造成了極大的恐慌,老刑警劉巖嫌松,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沪曙,死亡現(xiàn)場離奇詭異,居然都是意外死亡萎羔,警方通過查閱死者的電腦和手機(jī)液走,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贾陷,“玉大人缘眶,你說我怎么就攤上這事£怯睿” “怎么了磅崭?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瓦哎。 經(jīng)常有香客問我砸喻,道長,這世上最難降的妖魔是什么蒋譬? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任割岛,我火速辦了婚禮,結(jié)果婚禮上犯助,老公的妹妹穿的比我還像新娘癣漆。我一直安慰自己,他們只是感情好剂买,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布惠爽。 她就那樣靜靜地躺著,像睡著了一般瞬哼。 火紅的嫁衣襯著肌膚如雪婚肆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天坐慰,我揣著相機(jī)與錄音较性,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛赞咙,可吹牛的內(nèi)容都是我干的责循。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼攀操,長吁一口氣:“原來是場噩夢啊……” “哼院仿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起崔赌,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤意蛀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后健芭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秀姐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年慈迈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片省有。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡痒留,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蠢沿,到底是詐尸還是另有隱情伸头,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布舷蟀,位于F島的核電站恤磷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏野宜。R本人自食惡果不足惜扫步,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望匈子。 院中可真熱鬧河胎,春花似錦、人聲如沸虎敦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽其徙。三九已至胚迫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間擂橘,已是汗流浹背晌区。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朗若。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓恼五,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哭懈。 傳聞我的和親對象是個殘疾皇子灾馒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容