国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

generator

libin19890520 / 2397人閱讀

摘要:前文我們了解如果書(shū)寫(xiě)一個(gè)以及怎樣在一個(gè)類(lèi)中安裝一個(gè)但有時(shí)候我們只想要一個(gè)簡(jiǎn)單的而且并不想這么復(fù)雜處于這個(gè)目的變成語(yǔ)言里面出現(xiàn)了這個(gè)概念根據(jù)的解釋同樣也有的優(yōu)勢(shì)在輸出值的過(guò)程中是分散性的即他不會(huì)保存每一次輸出值這樣在循環(huán)里面更高效并且更節(jié)省效

前文我們了解如果書(shū)寫(xiě)一個(gè)Iterator,以及怎樣在一個(gè)類(lèi)中安裝一個(gè)Iterator. 但,有時(shí)候我們只想要一個(gè)簡(jiǎn)單的iterator, 而且并不想這么復(fù)雜. 處于這個(gè)目的, 變成語(yǔ)言里面出現(xiàn)了generator 這個(gè)概念. 根據(jù)wiki的解釋:

In fact, all generators are iterators

generator 同樣也有iteartor的優(yōu)勢(shì), 在輸出值的過(guò)程中,是分散性的, 即他不會(huì)保存每一次輸出值, 這樣在循環(huán)里面更高效, 并且更節(jié)省效率.

generator syntax

generator的格式和一個(gè)函數(shù)非常類(lèi)似, 他使用yield代替return, 來(lái)返回一個(gè)expression.

def a_gen:
    yield 1
    yield 2

使用generator實(shí)際上就和使用iteartor對(duì)象一樣. 因?yàn)間enerator 返回的就是iterator:

gen = a_gen()
print(next(gen))

既然, generator是Iterator, 那我們能不能在上面使用for...in...循環(huán)呢?
Yes~

for x in a_gen():
    print(x)

另外, 在python中, 提供了一個(gè)常見(jiàn)匿名generator的辦法. 使用 ( ) 即可. 里面放的就是 list comprehension.

a = (x for x in range(10))

這里需要注意, 上面 匿名 generator的返回值是一個(gè)generator object. 這點(diǎn)很重要, 這也是區(qū)分list comrehension 的關(guān)鍵點(diǎn). generator 延續(xù)著iterator的特性: 你要我才給 . 這樣, 不必先生成大量的數(shù)據(jù). 所以,generator 這個(gè)也常常用于處理數(shù)據(jù)較大的集合中.
如果僅僅是造了一個(gè)語(yǔ)法糖, 那generator的存在不就無(wú)意義了嗎? 所以,generator的優(yōu)勢(shì),或者說(shuō)用途還是挺廣泛的.

when we can use generator

用來(lái)快速生成Iterator對(duì)象. 即, 以前需要這樣寫(xiě),才能生成一個(gè)Iterator.

 class Xlist:
     def __init__(self,a_list):
         self.list = a_list
         self.index = 0
     def __iter__(self):
         return self
     def __next__(self):
         length = len(self.list)
         if(length==self.index):
             # 提出異常
             raise StopIteration
         else:
             result = self.list[self.index]
             self.index += 1
             return result

現(xiàn)在只需要, 使用generator即可

def Xlist(arr):
    for x in arr:
        yield x

省略的不止一點(diǎn)點(diǎn)

2.異步序列的操作
在python中,有時(shí)候讀取文件,可能會(huì)存在異步方式的讀取. 而且,現(xiàn)在主流的后臺(tái)處理程序都是NodeJS, 一種完全異步的編程語(yǔ)言. 而generator 本省就繼承了Iterator的特性, 有一種狀態(tài)暫停的效果. 這種效果, 也可以用來(lái)作為異步序列的處理. 比如我們這里可以編寫(xiě)一個(gè)普通串行:

def co(*callback):
    length = 0
    while length!=len(callback):
        yield callback[length]()
        length+=1


for x in co(lambda :1,lambda: 2):
    print(x)

簡(jiǎn)單總結(jié):

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/45471.html

相關(guān)文章

  • yeoman-generator 入門(mén)教程

    摘要:上下文路徑為了方便文件流的輸入輸出,使用兩種位置環(huán)境。目標(biāo)上下文目標(biāo)上下文定義為當(dāng)前工作目錄或含文件最接近的父文件夾。這確保了用戶(hù)行為的一致。幫助用戶(hù)嚴(yán)重需要覆蓋的內(nèi)容。 摘要 隨著 Web 2.0 和 HTML 5 的流行,現(xiàn)在的 Web 應(yīng)用所能提供的功能和交互能力比之前傳統(tǒng)的 Web 應(yīng)用要強(qiáng)大很多。應(yīng)用的很多實(shí)現(xiàn)邏輯被轉(zhuǎn)移到了瀏覽器端來(lái)實(shí)現(xiàn)。瀏覽器不再只提供單一的數(shù)據(jù)接收和展現(xiàn)...

    caiyongji 評(píng)論0 收藏0
  • GAN 論文大匯總

    摘要:在這里匯總了一個(gè)現(xiàn)在和經(jīng)常使用的論文,所有文章都鏈接到了上面。如果你對(duì)感興趣,可以訪問(wèn)這個(gè)專(zhuān)題。作者微信號(hào)簡(jiǎn)書(shū)地址是一個(gè)專(zhuān)注于算法實(shí)戰(zhàn)的平臺(tái),從基礎(chǔ)的算法到人工智能算法都有設(shè)計(jì)。加入實(shí)戰(zhàn)微信群,實(shí)戰(zhàn)群,算法微信群,算法群。 作者:chen_h微信號(hào) & QQ:862251340微信公眾號(hào):coderpai簡(jiǎn)書(shū)地址:https://www.jianshu.com/p/b7f... sh...

    lifesimple 評(píng)論0 收藏0
  • Generator的正確打開(kāi)方式

    摘要:不參與迭代迭代會(huì)執(zhí)行所有的,也就是說(shuō),在迭代后的對(duì)象將不會(huì)再返回任何有效的值我們可以在迭代器對(duì)象上直接調(diào)用,來(lái)終止后續(xù)的代碼執(zhí)行。 前兩年大量的在寫(xiě)Generator+co,用它來(lái)寫(xiě)一些類(lèi)似同步的代碼 但實(shí)際上,Generator并不是被造出來(lái)干這個(gè)使的,不然也就不會(huì)有后來(lái)的async、await了 Generator是一個(gè)可以被暫停的函數(shù),并且何時(shí)恢復(fù),由調(diào)用方?jīng)Q定 希望本文可...

    happyfish 評(píng)論0 收藏0
  • GAN動(dòng)物園——GAN的各種變體列表

    摘要:生成對(duì)抗網(wǎng)絡(luò)的各種變體非常多,的發(fā)明者在上推薦了這份名為的各種變體列表,這也表明現(xiàn)在確實(shí)非常火,被應(yīng)用于各種各樣的任務(wù)。了解這些各種各樣的,或許能對(duì)你創(chuàng)造自己的有所啟發(fā)。這篇文章列舉了目前出現(xiàn)的各種變體,并將長(zhǎng)期更新。 生成對(duì)抗網(wǎng)絡(luò)(GAN)的各種變體非常多,GAN 的發(fā)明者 Ian Goodfellow 在Twitter上推薦了這份名為T(mén)he GAN Zoo的各種GAN變體列表,這也表明現(xiàn)...

    tianyu 評(píng)論0 收藏0
  • 深入理解 Generator 函數(shù)

    摘要:同時(shí),迭代器有一個(gè)方法來(lái)向函數(shù)中暫停處拋出一個(gè)錯(cuò)誤,該錯(cuò)誤依然可以通過(guò)函數(shù)內(nèi)部的模塊進(jìn)行捕獲處理。 本文翻譯自:Diving Deeper With ES6 Generators 由于個(gè)人能力有限,翻譯中難免有紕漏和錯(cuò)誤,望不吝指正issue ES6 Generators:完整系列 The Basics Of ES6 Generators Diving Deeper With E...

    jzzlee 評(píng)論0 收藏0
  • es6 Generators詳解

    摘要:每個(gè)任務(wù)必須顯式地掛起自己,在任務(wù)切換發(fā)生時(shí)給予它完全的控制。在這些嘗試中,數(shù)據(jù)經(jīng)常在任務(wù)之間共享。但由于明確的暫停,幾乎沒(méi)有風(fēng)險(xiǎn)。 翻譯自 github 概述 什么是generators? 我們可以把generators理解成一段可以暫停并重新開(kāi)始執(zhí)行的函數(shù) function* genFunc() { // (A) console.log(First); yi...

    zhaot 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<