階段01基礎(chǔ)篇_D09_生成器generator 迭代器iterator 列表推導(dǎo)式

生成器generator 迭代器 iterator 列表推導(dǎo)式

生成器 generator

  • 生成器與迭代器是一種,生成器的本質(zhì)就是迭代器晤郑,唯一的區(qū)別:生成器是我們自己用python代碼構(gòu)建的數(shù)據(jù)結(jié)構(gòu)。迭代器都是python提供的劲够,或者轉(zhuǎn)化得來(lái)的。

  • 一個(gè)包含yield關(guān)鍵字的函數(shù)就是一個(gè)生成器函數(shù)

  • 并且yield不能和return共用,并且yield只能用在函數(shù)內(nèi)济榨。

  • 生成器Demo:
    import time
    def generator_demo(n):
        "這個(gè)函數(shù)在每次循環(huán)時(shí)都會(huì)產(chǎn)生一個(gè)值,之后將其返還給它的調(diào)用者绿映。"
        "有yield的函數(shù)稱(chēng)為生成器擒滑,這個(gè)函數(shù)就是生成器函數(shù)"
        for i in range(1, n+1):
            yield f"{i} square = {[i**2]}"
    
    g = generator_demo(10000)  # 創(chuàng)建生成器對(duì)象
    print(g)   # <generator object generator_demo at 0x0000020C906CC660>
    # 在一個(gè)for循環(huán)中時(shí),在循環(huán)中每一次完成函數(shù)的yield語(yǔ)句后叉弦,控制權(quán)都會(huì)返還給函數(shù)
    for i in g:   
        print(i)
        time.sleep(1)
    

迭代器 iterator

  • 迭代是訪問(wèn)集合元素的一種方式丐一;
  • 迭代器是一個(gè)可以記住遍歷的位置的對(duì)象。
  • 迭代器對(duì)象從集合的第一個(gè)元素開(kāi)始訪問(wèn)淹冰,直到所有的元素被訪問(wèn)完結(jié)束库车。迭代器只能往前不會(huì)后退。
  • 迭代器有兩個(gè)基本的函數(shù)iter() 和 next()
  • 字符串樱拴,列表柠衍,元組對(duì)象都可以用于創(chuàng)建迭代器:
list = [1, 2, 3, 4]
it = iter(list)
print(next(it))      # 1
print(next(it))      # 2
  • 迭代器對(duì)象可以用for遍歷:
list = [1, 2, 3, 4]
it = iter(list)
for i in it:
    print(i, end=" ")   # 1 2 3 4 
  • 也可以使用next()函數(shù):
import sys
list = [1, 2, 3, 4]
it = iter(list)
while True:
    try:
        print(next(it))
    except StopIteration:
        sys.exit()

?

列表推導(dǎo)式

  • 描述:

    • 是Python的一種獨(dú)有特性。推導(dǎo)式是可以從一個(gè)數(shù)據(jù)序列構(gòu)建另一個(gè)新的數(shù)據(jù)序列的結(jié)構(gòu)體晶乔。
  • 共有三種推導(dǎo)式:

    • 列表(list)推導(dǎo)式

      l1 = [i for i in range(11) if i % 3 == 0]
      print(l1)    # [0, 3, 6, 9]
      
      l2 = [i for i in range(1, 11)]
      print(l2)    # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
      
      l3 = [i**2 for i in range(1, 7)]
      print(l3)    # [1, 4, 9, 16, 25, 36]
      
  • 字典(dict)推導(dǎo)式

    d = {v.lower(): k.upper() for k, v in dict.items()}
    print(d)  # {'apple': 'A', 'button': 'B'}
    
  • 列表(set)推導(dǎo)式

    s1 = {i+i for i in "python"}
    print(s1)    # {'tt', 'pp', 'yy', 'hh', 'oo', 'nn'}
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拧略,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瘪弓,更是在濱河造成了極大的恐慌垫蛆,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腺怯,死亡現(xiàn)場(chǎng)離奇詭異袱饭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)呛占,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)虑乖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人晾虑,你說(shuō)我怎么就攤上這事疹味。” “怎么了帜篇?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵糙捺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我笙隙,道長(zhǎng)洪灯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任竟痰,我火速辦了婚禮签钩,結(jié)果婚禮上掏呼,老公的妹妹穿的比我還像新娘。我一直安慰自己铅檩,他們只是感情好憎夷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著昧旨,像睡著了一般拾给。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上臼予,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天鸣戴,我揣著相機(jī)與錄音,去河邊找鬼粘拾。 笑死窄锅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缰雇。 我是一名探鬼主播入偷,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼械哟!你這毒婦竟也來(lái)了疏之?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤暇咆,失蹤者是張志新(化名)和其女友劉穎锋爪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體爸业,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡其骄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扯旷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拯爽。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖钧忽,靈堂內(nèi)的尸體忽然破棺而出毯炮,到底是詐尸還是另有隱情,我是刑警寧澤耸黑,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布桃煎,位于F島的核電站,受9級(jí)特大地震影響崎坊,放射性物質(zhì)發(fā)生泄漏备禀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一奈揍、第九天 我趴在偏房一處隱蔽的房頂上張望曲尸。 院中可真熱鬧,春花似錦男翰、人聲如沸另患。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)昆箕。三九已至,卻和暖如春租冠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背顽爹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留镜粤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓肉渴,卻偏偏與公主長(zhǎng)得像公荧,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子同规,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

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