Day11總結(jié)

遞歸函數(shù)

1.遞歸函數(shù):在函數(shù)中調(diào)用函數(shù)就是遞歸函數(shù)
2.方法步驟
第一步:聲明函數(shù)(和普通函數(shù)一樣)
第二步:找臨界值(函數(shù)結(jié)束的條件)
第三步:找關(guān)系
假設(shè)函數(shù)的功能已經(jīng)實(shí)現(xiàn)了僵娃,找f(n)與f(n—1)的關(guān)系
第四步:使用f(n-1)去實(shí)現(xiàn)f(n)的功能

例:用遞歸實(shí)現(xiàn):1+2+3+...+N
def print_star(n):
    if n == 1:
        return '*'

    print(n*'*')
    print_star(n-1)

print_star(7)

匿名函數(shù)

1.語法:lambda 參數(shù)列表:返回值
2.說明
lambda - 關(guān)鍵字,固定寫法
參數(shù)列表 - 形參列表舵匾,以‘參數(shù)名1锉罐,參數(shù)名2,...’
: - 固定寫法
返回值 - 寫任何有結(jié)果的表達(dá)式都可以

注意:匿名函數(shù)的函數(shù)體内列,只有一條語句纽哥,而且這條語句的結(jié)果就是函數(shù)的返回值(不需要return)

3.使用條件
a.函數(shù)的功能一行代碼就可以實(shí)現(xiàn)
b.函數(shù)的功能不會(huì)重復(fù)使用

例:求兩個(gè)數(shù)的和
sum1 = lambda num1, num2: num1 + num2
print(type(sum1))
print(sum1(10, 20))

補(bǔ)充:Python中的三目運(yùn)算符

C語言 : 條件語句?值1:值2 —— 如果條件語句的結(jié)果為True代箭,整個(gè)表達(dá)式的結(jié)果是值1否則是值2
Python:值1 if 條件語句 else 值2 —— 如果條件語句的結(jié)果是True墩划,整個(gè)表達(dá)式的結(jié)果是值1否則是值2

例:寫一個(gè)匿名函數(shù),求兩個(gè)數(shù)的最大值
max_value = lambda num1,num2: num1 if num1>num2 else num2
print(max_value(10,2))

實(shí)參高階函數(shù)

概念:一個(gè)函數(shù)可以作為另一個(gè)函數(shù)的參數(shù)梢卸,如果一個(gè)函數(shù)的參數(shù)也是函數(shù)走诞,那么這種函數(shù)叫實(shí)參高階函數(shù)。

返回值高階函數(shù)

概念:一個(gè)函數(shù)的返回值如果也是一個(gè)函數(shù)蛤高,那么這個(gè)函數(shù)就是 返回值高階函數(shù)

迭代器

1.什么是迭代器
a.迭代器是容器型數(shù)據(jù)類型(序列)蚣旱,可變(不支持增刪改),有序(不支持下標(biāo)操作)
b.保存在迭代器中的元素戴陡,只能取塞绿,并且取出后迭代器中就不再保存,也不可以再往迭代器中添加元素
c.迭代器沒有對(duì)應(yīng)格式的數(shù)據(jù)恤批,迭代器只能通過將其他的序列轉(zhuǎn)換成迭代器异吻,或者是生成器

2.獲取迭代器中的元素(不管用什么樣的方式去獲取迭代器中的元素,獲取一個(gè)就會(huì)少一個(gè))
a.獲取單個(gè)元素:next(迭代器) - 獲取迭代器頂部的元素(最上層/第一個(gè)元素)
b.遍歷 (for)

生成器

1.什么是生成器
a.生成器就是迭代器 - 獲取元素和迭代器一樣(只能單個(gè)單個(gè)取喜庞,且取一個(gè)少一個(gè))
b.調(diào)用函數(shù)體中有yield關(guān)鍵字的函數(shù)诀浪,就可以得到一個(gè)生成器

2.yield
a. yield只能出現(xiàn)在函數(shù)體中
b.調(diào)用有yield關(guān)鍵字的函數(shù),不會(huì)執(zhí)行函數(shù)體延都,也不會(huì)獲取返回值雷猪,而是得到一個(gè)生成器

例:
def func1():
    print('我是一個(gè)函數(shù)')
    yield
    return 100

print(func1())

3.生成器怎么產(chǎn)生數(shù)據(jù)
a.看一個(gè)生成器能夠產(chǎn)生幾個(gè)數(shù)據(jù),看執(zhí)行完生成器對(duì)應(yīng)的函數(shù)會(huì)遇到幾次yield晰房;yield后面的值就是生成器能產(chǎn)生數(shù)據(jù)

def func2():
    yield 'abc'
    yield 'd' 'c'

gen1 = func2()
print(gen1)
print(next(gen1))
print(next(gen1))

4.生成器生成數(shù)據(jù)的原理
生成器不會(huì)同時(shí)去將所有的元素保存起來求摇,而是需要數(shù)據(jù)時(shí)產(chǎn)生數(shù)據(jù)
獲取生成器元素的時(shí)候,就去執(zhí)行生成器對(duì)應(yīng)的函數(shù)的函數(shù)體殊者,從前往后執(zhí)行与境,
直到遇到y(tǒng)ield為止,并且將yield后面的值作為結(jié)果猖吴,同時(shí)保存結(jié)果位置摔刁;
下次獲取下一個(gè)元素的時(shí)候,接著上次結(jié)束的位置往后執(zhí)行海蔽,直到遇到下一個(gè)yield簸搞;
以此類推...
如果執(zhí)行到函數(shù)結(jié)束都沒有遇到y(tǒng)ield扁位,next函數(shù)會(huì)報(bào)StopIteration錯(cuò)誤

def func3():
    print('======第一個(gè)數(shù)據(jù)=======')
    yield 1
    print('======第二個(gè)數(shù)據(jù)=======')
    yield 2
    print('======第三個(gè)數(shù)據(jù)=======')
    yield 3
    print('end')

gen2 = func3()
print(next(gen2))
print(next(gen2))
print(next(gen2))

生成式

1.生成式本質(zhì)就是生成器
2.語法1
(表達(dá)式 for 變量 in 序列) - 創(chuàng)建一個(gè)生成器

def func1():
    for 變量 in 序列:
        yield 表達(dá)式

[表達(dá)式 for 變量 in 序列] - 將生成式對(duì)應(yīng)的生成器轉(zhuǎn)換成列表
語法2
(表達(dá)式 for 變量 in 序列 if 條件語句) - 創(chuàng)建一個(gè)生成器

ef func2():
    for 變量 in 序列:
        if 條件
           yield 變量
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市趁俊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刑然,老刑警劉巖寺擂,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異泼掠,居然都是意外死亡怔软,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門择镇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挡逼,“玉大人,你說我怎么就攤上這事腻豌〖铱玻” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵吝梅,是天一觀的道長虱疏。 經(jīng)常有香客問我,道長苏携,這世上最難降的妖魔是什么做瞪? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮右冻,結(jié)果婚禮上装蓬,老公的妹妹穿的比我還像新娘。我一直安慰自己纱扭,他們只是感情好牍帚,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著跪但,像睡著了一般履羞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屡久,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天忆首,我揣著相機(jī)與錄音,去河邊找鬼被环。 笑死糙及,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的筛欢。 我是一名探鬼主播浸锨,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼唇聘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了柱搜?” 一聲冷哼從身側(cè)響起迟郎,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎聪蘸,沒想到半個(gè)月后宪肖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡健爬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年控乾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娜遵。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜕衡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出设拟,到底是詐尸還是另有隱情慨仿,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布蒜绽,位于F島的核電站镶骗,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏躲雅。R本人自食惡果不足惜鼎姊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望相赁。 院中可真熱鬧相寇,春花似錦、人聲如沸钮科。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绵脯。三九已至佳励,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛆挫,已是汗流浹背赃承。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留悴侵,地道東北人瞧剖。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親抓于。 傳聞我的和親對(duì)象是個(gè)殘疾皇子做粤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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

  • 01-函數(shù)作為變量 1.函數(shù)調(diào)用表達(dá)式 1)函數(shù)調(diào)用表達(dá)式 - 調(diào)用函數(shù)的語句2)普通值能做的事情函數(shù)調(diào)用表達(dá)式都...
    依然羽閱讀 229評(píng)論 0 0
  • 一.函數(shù)作為變量 1.函數(shù)調(diào)用表達(dá)式 函數(shù)調(diào)用表達(dá)式 - 調(diào)用函數(shù)的語句普通值能做的事,函數(shù)調(diào)用表達(dá)式都可以做 2...
    SheeranED閱讀 156評(píng)論 0 0
  • 1.函數(shù)調(diào)用表達(dá)式:調(diào)用函數(shù)的語句 普通值能做的事情函數(shù)調(diào)用表達(dá)式都能做 2.函數(shù)作為變量 捉撮!python中聲明函...
    itachhh閱讀 228評(píng)論 0 0
  • 1.函數(shù)作為變量python中聲明函數(shù)其實(shí)就是聲明一個(gè)類型是function的變量怕品,函數(shù)名就是變量名普通變量能做的...
    默默卡閱讀 97評(píng)論 0 0
  • 遞歸函數(shù) 1.什么是遞歸?在函數(shù)中調(diào)用本身的函數(shù)被稱為遞歸函數(shù) 2.遞歸的作用:循環(huán)可以做的事情遞歸函數(shù)都可以做,...
    xue_y閱讀 142評(píng)論 0 0