day11總結(jié):函數(shù)提高雏亚、迭代器和生成器(2019-04-28)

1. 函數(shù)作為變量

  • python中聲明函數(shù)其實(shí)就是聲明一個(gè)類型是function的變量,函數(shù)名就是變量名
  • 所有普通變量能做的事函數(shù)都可以做:
    a. 一個(gè)變量可以給另外一個(gè)變量賦值:將函數(shù)名作為變量僚焦,給另一個(gè)變量賦值
    b. 一個(gè)變量可以作為容器的元素:函數(shù)可以作為容器中的一個(gè)元素
    c. 變量可以作為函數(shù)的參數(shù):函數(shù)作為函數(shù)的參數(shù)(實(shí)參高階函數(shù))
    d. 變量可以作為函數(shù)的返回值:函數(shù)作為函數(shù)的返回值(返回值高階函數(shù))
  • sort函數(shù)(sort的高級(jí)使用):實(shí)參高階函數(shù)的運(yùn)用
  • 列表.sort(), sorted(), max(), min() 函數(shù)中key參數(shù)宇弛,key要求:傳一個(gè)函數(shù),并且函數(shù)有一個(gè)參數(shù)和一個(gè)返回值
- 序列.sort函數(shù)中有個(gè)參數(shù)key腰耙,這個(gè)參數(shù)要求傳一個(gè)函數(shù)榛丢,并且函數(shù)有一個(gè)參數(shù)和一個(gè)返回值
- 參數(shù)就是序列中的元素, 返回值就是排序比較的對(duì)象
# def compare(item):
#     return item['age']
# all_students.sort(key=compare)
all_students.sort(key=lambda item: item['age'])
print(all_students)
  • sort函數(shù)練習(xí)
# 將all_message中的元祖按照第二個(gè)元素從大到小排序,然后再按照學(xué)號(hào)的最后一位從小到大排序
all_message = [
    ('余婷', 'python1902004'),
    ('張三', 'python1902106'),
    ('小明', 'python1902027')
]

all_message.sort(key=lambda item: item[1], reverse=True)
print(all_message)

all_message.sort(key=lambda item: item[1][-1])
print(all_message)

2. 迭代器(iter)

1)什么是迭代器

  • 迭代器是容器型類型數(shù)據(jù)(可以同時(shí)存儲(chǔ)多個(gè)數(shù)據(jù)),但是想要獲取/查看迭代器中元素的值挺庞,只能將元素取出來
  • 取出來的元素在迭代器中就不存在了晰赞,取的時(shí)候只能從前往后一個(gè)一個(gè)的取,不能跳著取

2)迭代器中的元素

  • 迭代器的元素只能通過類型轉(zhuǎn)換,將其他容器轉(zhuǎn)換成迭代器:iter(序列)宾肺;或者通過生成器去生成
  • 轉(zhuǎn)換:所有序列都可以轉(zhuǎn)換成迭代器溯饵;迭代器中的元素可以是任何類型的數(shù)據(jù)

3)獲取迭代器中的元素(不支持增刪改侵俗,只支持查也就是獲认怯谩)

  • 迭代器獲取元素,不管以什么樣的方式獲取隘谣,獲取后增拥,這個(gè)元素在迭代器中就不存在了
  • next(迭代器):獲取迭代器頂部的數(shù)據(jù)(最上面的數(shù)據(jù));取完了再取會(huì)報(bào)錯(cuò)(StopIteration)
  • 遍歷獲取每個(gè)元素(只能for循環(huán)遍歷):遍歷一個(gè)丟掉一個(gè)寻歧,遍歷完后元素沒了

3. 生成器(generator)

1)什么是生成器

  • 生成器就是迭代器掌栅,但迭代器不一定是生成器
  • 調(diào)用一個(gè)帶有yield關(guān)鍵字的函數(shù)就能得到一個(gè)生成器(yield只能出現(xiàn)在函數(shù)體中)

2)生成器的元素

  • 生成器獲取元素的方式和迭代器一樣:next()和for循環(huán)遍歷
  • 生成器元素的個(gè)數(shù):看執(zhí)行完生成器對(duì)應(yīng)的函數(shù)會(huì)遇到幾次yield
  • 元素的值:看yield后表達(dá)式的值

3)生成器產(chǎn)生數(shù)據(jù)的原理

  • 當(dāng)獲取生成器的元素的時(shí)候,會(huì)執(zhí)行生成器對(duì)應(yīng)的函數(shù)码泛,從開始執(zhí)行到y(tǒng)ield為止猾封,將yield后面的數(shù)據(jù)作為元素返回并且記錄結(jié)束位置
  • 下次獲取元素的時(shí)候,從上次結(jié)束的位置接著往后執(zhí)行噪珊,直到遇到y(tǒng)ield晌缘,將yield后面的數(shù)據(jù)作為元素返回并且記錄結(jié)束位置
  • 以次類推,如果從開始執(zhí)行到函數(shù)結(jié)束痢站,沒有遇到y(tǒng)ield磷箕,那么就獲取不到元素
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市阵难,隨后出現(xiàn)的幾起案子岳枷,更是在濱河造成了極大的恐慌,老刑警劉巖呜叫,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件空繁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡朱庆,警方通過查閱死者的電腦和手機(jī)家厌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來椎工,“玉大人饭于,你說我怎么就攤上這事∥桑” “怎么了掰吕?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)颅痊。 經(jīng)常有香客問我殖熟,道長(zhǎng),這世上最難降的妖魔是什么斑响? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任菱属,我火速辦了婚禮钳榨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纽门。我一直安慰自己薛耻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布赏陵。 她就那樣靜靜地躺著饼齿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蝙搔。 梳的紋絲不亂的頭發(fā)上缕溉,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音吃型,去河邊找鬼证鸥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勤晚,可吹牛的內(nèi)容都是我干的枉层。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼运翼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼返干!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起血淌,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤矩欠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后悠夯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體癌淮,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年沦补,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乳蓄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡夕膀,死狀恐怖虚倒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情产舞,我是刑警寧澤魂奥,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站易猫,受9級(jí)特大地震影響耻煤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一哈蝇、第九天 我趴在偏房一處隱蔽的房頂上張望棺妓。 院中可真熱鬧,春花似錦炮赦、人聲如沸怜跑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妆艘。三九已至彤灶,卻和暖如春看幼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背幌陕。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工诵姜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人搏熄。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓棚唆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親心例。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宵凌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349