要理解yield的作用,你必須理解生成器是什么。在理解生成器之前,必須先理解迭代器。
1.迭代器
當(dāng)您創(chuàng)建一個(gè)列表時(shí),你可以逐個(gè)讀取它的項(xiàng)。逐項(xiàng)讀取其項(xiàng)稱(chēng)為迭代:
mylist是一個(gè)可迭代的對(duì)象。當(dāng)你使用列表解析式時(shí),你創(chuàng)建了一個(gè)列表,因此也是一個(gè)迭代器:
所有你可以用"for... in ...."都是迭代器,包括列表、字符串、文件…等等。
這些迭代器非常方便,因?yàn)槟憧梢噪S心所欲地讀取它們,但是你將所有的值都存儲(chǔ)在內(nèi)存中,當(dāng)你有很多值時(shí),這就非常浪費(fèi)內(nèi)存了。
為了解決這樣的問(wèn)題,Python有了生成器的概念。
2.生成器
生成器是迭代器,這種迭代器只能迭代一次。生成器不會(huì)將所有值都存儲(chǔ)在內(nèi)存中,它們會(huì)動(dòng)態(tài)生成這些值:
它和列表解析式是類(lèi)似的,只是用()代替了[]。但是,你不能在mygenerator中對(duì)i執(zhí)行第二次,因?yàn)樯善髦荒苁褂靡淮危核黳rint(0),然后忘記它,print(1),最后是4。
3.Yield
yield是一個(gè)與return類(lèi)似的關(guān)鍵字,只是函數(shù)將返回一個(gè) 生成器 。
認(rèn)真看完下面這個(gè)例子,你應(yīng)該能完全明白。
函數(shù)將返回一組只需要讀取一次的值。如果你能將這個(gè)特性理解清楚,并將其應(yīng)用到你的代碼中,可能可以極大地提高性能,下次我們將介紹在什么時(shí)候該用它。
請(qǐng)注意示例中的第6行,在調(diào)用函數(shù)時(shí),在函數(shù)體中編寫(xiě)的代碼不會(huì)運(yùn)行。函數(shù)只返回生成器對(duì)象,可別忘了這個(gè)重點(diǎn)。
最后,你的代碼將從每次使用生成器時(shí)停止的地方繼續(xù)。因此示例中第二次使用生成器的時(shí)候,我們的生成器已經(jīng)完全沒(méi)有值了。
所以最核心的邏輯如下:
- for函數(shù)第一次調(diào)用從函數(shù)創(chuàng)建的生成器對(duì)象時(shí),它將從頭運(yùn)行函數(shù)中的代碼,直到達(dá)到y(tǒng)ield,返回循環(huán)的第一個(gè)值。
- 隨后的調(diào)用都將再次運(yùn)行你在函數(shù)中編寫(xiě)的循環(huán),并yield返回下一個(gè)值,直到?jīng)]有要返回的值為止,就如我們上面的例子所示。
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
相關(guān)推薦
提高網(wǎng)站關(guān)鍵詞排名的28個(gè)SEO小技巧關(guān)鍵詞位置、密度、處理 URL中出現(xiàn)關(guān)鍵詞(英文) 網(wǎng)頁(yè)標(biāo)題中出現(xiàn)關(guān)鍵詞(1-3個(gè)) 關(guān)鍵詞標(biāo)簽中出現(xiàn)
發(fā)表于 12-01 17:08
停用詞的移除、大小寫(xiě)字母轉(zhuǎn)化和詞干提取。4)獲取查詢(xún)。獲取單詞權(quán)重,對(duì)于可疑文檔利用TF-IDF獲得關(guān)鍵詞,并排序得到相應(yīng)的關(guān)鍵詞列表。排在前n個(gè)的關(guān)鍵詞組成一個(gè)查詢(xún),以此類(lèi)推,本試驗(yàn)中n=5。5)檢索
發(fā)表于 01-26 10:38
、轉(zhuǎn)化率,且與自己產(chǎn)品相關(guān)的關(guān)鍵詞,單獨(dú)拿出來(lái)放進(jìn) search term 里面進(jìn)行優(yōu)化 listing 的操作。2.自己利用一些工具去篩選出一些買(mǎi)家搜索詞,然后根據(jù)自己對(duì)產(chǎn)品的理解,買(mǎi)家的搜索習(xí)慣,適當(dāng)
發(fā)表于 06-05 15:41
l 參考論文:《TextRank: Bringing Order into Texts》l TextRank算法提取關(guān)鍵詞的Java實(shí)現(xiàn)l TextRank算法自動(dòng)摘要的Java實(shí)現(xiàn)這篇文章中作者
發(fā)表于 11-05 10:41
我們可以對(duì)神經(jīng)網(wǎng)絡(luò)架構(gòu)進(jìn)行優(yōu)化,使之適配微控制器的內(nèi)存和計(jì)算限制范圍,并且不會(huì)影響精度。我們將在本文中解釋和探討深度可分離卷積神經(jīng)網(wǎng)絡(luò)在 Cortex-M 處理器上實(shí)現(xiàn)關(guān)鍵詞識(shí)別的潛力。關(guān)鍵詞識(shí)別
發(fā)表于 07-23 06:59
我們?cè)谧?b class='flag-5'>關(guān)鍵詞優(yōu)化排名的時(shí)候,有經(jīng)驗(yàn)的seo人員都會(huì)有自己的一套關(guān)于關(guān)鍵詞應(yīng)該怎么去優(yōu)化排名的方法,但是對(duì)于一些剛接觸seo的新手來(lái)說(shuō)就會(huì)比較迷茫,不知道應(yīng)該怎么去做好關(guān)鍵詞的排名,大部分新手都主要
發(fā)表于 08-11 01:19
一夜之間關(guān)鍵詞排名掉完了,沒(méi)有被K,也沒(méi)有出現(xiàn)違規(guī)操作,這是怎么回事呢?
發(fā)表于 01-27 11:01
簡(jiǎn)單介紹 yield本篇文章會(huì)先向你介紹一個(gè)陌生的 Python 關(guān)鍵詞,他和 return 就像一對(duì)新兄弟,有相似之處,又各有不同。相似的是:yield 和 return 都可以在一
發(fā)表于 03-16 16:21
FPGA 年度關(guān)鍵詞,我的想法是“標(biāo)準(zhǔn)化”;今年的工作中遇到了不少同事的issues,本身都是小問(wèn)題或者很細(xì)節(jié)的東西但是卻反復(fù)出現(xiàn)問(wèn)題,目前想到的最好的辦法是做好設(shè)計(jì)規(guī)則的標(biāo)準(zhǔn)化才能避免,不知道大家有沒(méi)有更好的建議?
發(fā)表于 12-06 20:31
文本的關(guān)鍵詞識(shí)別是文本挖掘中的基本問(wèn)題之一。在研究現(xiàn)有基于復(fù)雜網(wǎng)絡(luò)的關(guān)鍵詞識(shí)別方法的基礎(chǔ)上,從整個(gè)復(fù)雜網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)特征的信息缺失角度來(lái)考察各節(jié)點(diǎn)的重要程度。提出強(qiáng)度熵測(cè)度來(lái)量化評(píng)估各節(jié)點(diǎn)重要程度,用于解決中文關(guān)鍵詞識(shí)別問(wèn)題。實(shí)驗(yàn)
發(fā)表于 11-24 09:54
?7次下載
為改進(jìn)基于關(guān)鍵詞的最優(yōu)路徑查詢(xún)算法,在大規(guī)模圖以及多查詢(xún)關(guān)鍵詞下復(fù)雜度過(guò)高與可擴(kuò)展性不足的缺陷,依據(jù)查詢(xún)關(guān)鍵詞序列構(gòu)建候選路徑的策略提出一種高效查詢(xún)算法。該算法在路徑構(gòu)建過(guò)程中優(yōu)先滿(mǎn)足查詢(xún)關(guān)鍵
發(fā)表于 12-06 11:28
?0次下載
在TF-IDF算法基礎(chǔ)上,提出新的基于詞頻統(tǒng)計(jì)的關(guān)鍵詞提取方法。利用段落標(biāo)注技術(shù),對(duì)處于不同位置的詞語(yǔ)給予不同的位置權(quán)重,對(duì)分詞結(jié)果中詞頻較高的同詞性詞語(yǔ)進(jìn)行詞語(yǔ)相似度計(jì)算,合并相似度較高的詞語(yǔ)
發(fā)表于 12-15 15:29
?13次下載
自動(dòng)關(guān)鍵詞抽取是從文本或文本集合中自動(dòng)抽取主題性或重要性的詞或短語(yǔ),是文本檢索、文本摘要等許多文本挖掘任務(wù)的基礎(chǔ)性和必要性的工作.探討了關(guān)鍵詞和自動(dòng)關(guān)鍵詞抽取的內(nèi)涵,從語(yǔ)言學(xué)、認(rèn)知科學(xué)
發(fā)表于 12-26 16:47
?2次下載
結(jié)合文檔本身的結(jié)構(gòu)信息與外部詞語(yǔ)的語(yǔ)義信息,提出一種融合BERT詞向量與 Textrank的關(guān)鍵詞抽取方法。在基于網(wǎng)絡(luò)圖的 Textrank方法基礎(chǔ)上,引入語(yǔ)義差異性并利用BERT詞向量加權(quán)方式優(yōu)化
發(fā)表于 03-21 09:55
?18次下載
本篇文章會(huì)先向你介紹一個(gè)陌生的 Python 關(guān)鍵詞,他和 return 就像一對(duì)新兄弟,有相似之處,又各有不同。
發(fā)表于 03-16 16:20
?1016次閱讀
評(píng)論