最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python?yield迭代器詳解

 更新時(shí)間:2022年11月07日 10:35:38   作者:一休Q_Q  
帶有yield的函數(shù)在Python中被稱之為generator(生成器),也就是說(shuō),當(dāng)你調(diào)用這個(gè)函數(shù)的時(shí)候,函數(shù)內(nèi)部的代碼并不立即執(zhí)行?,這個(gè)函數(shù)只是返回一個(gè)生成器

一、yield迭代器

在python深度學(xué)習(xí)模型讀取數(shù)據(jù)時(shí),經(jīng)常遇到y(tǒng)ield,互聯(lián)網(wǎng)搜索后,將比較容易理解的說(shuō)明記錄一下。

二、使用步驟

1.引入庫(kù)

代碼如下(示例):

def batch(data, batch_size):
	for ex in data:
		yield ex

2.讀入數(shù)據(jù)

代碼如下(示例):

p_batch = batch(p_batch, self.batch_size)

總結(jié)

如果不太好理解yield,可以先把yield當(dāng)作return的同胞兄弟來(lái)看,他們都在函數(shù)中使用,并履行著返回某種結(jié)果的職責(zé)。

這兩者的區(qū)別是:

有return的函數(shù)直接返回所有結(jié)果,程序終止不再運(yùn)行,并銷毀局部變量;

def batch(data, batch_size):
	for ex in data:
		return ex

而有yield的函數(shù)則返回一個(gè)可迭代的 generator(生成器)對(duì)象,你可以使用for循環(huán)或者調(diào)用next()方法遍歷生成器對(duì)象來(lái)提取結(jié)果。

什么是生成器呢?在 Python 中,使用了yield的函數(shù)被稱為生成器。有點(diǎn)套娃的感覺(jué),但事實(shí)就是這樣,調(diào)用一個(gè)yield函數(shù),就會(huì)返回一個(gè)生成器對(duì)象。

def test:
	x=1
	y=10
	while x<y:
		yield x
		x+=1
t = test()

在調(diào)用生成器函數(shù)的過(guò)程中,每次遇到 yield 時(shí)函數(shù)會(huì)暫停并保存當(dāng)前所有的運(yùn)行信息(保留局部變量),返回yield的值, 并在下一次執(zhí)行next()方法時(shí)從當(dāng)前位置繼續(xù)運(yùn)行,直到生成器被全部遍歷完。

舉個(gè)例子

def test:
	x=1
	yield x
	yield x+1
	yield x+2
t = test()
for tmp in t:
	print(tmp)

#輸出結(jié)果為:
1
2
3

也可以調(diào)用next方法:

next(t)
#輸出:
1
next(t)
#輸出:
2
next(t)
#輸出:
3

可以看到,test函數(shù)返回一個(gè)生成器,調(diào)用next()方法后,函數(shù)開始運(yùn)行,遇到第一個(gè)yield關(guān)鍵字,返回生成的值(1),程序暫停;

第二次調(diào)用next()方法,代碼從上次暫停的位置開始執(zhí)行,并遇到了第二個(gè)yield關(guān)鍵字,再返回生成的值(2),程序暫停;

第三次調(diào)用也是如此,返回生成的值(3),生成器耗盡,程序終止;

帶yield的函數(shù)是一個(gè)生成器,這個(gè)生成器有一個(gè)方法就是next,next就相當(dāng)于“下一步”生成哪個(gè)數(shù),這一次的next開始的地方是接著上一次的next停止的地方執(zhí)行的。

所以調(diào)用next的時(shí)候,生成器并不會(huì)從函數(shù)的開始執(zhí)行,只是接著上一步停止的地方開始,然后遇到y(tǒng)ield后,return出要生成的數(shù),此步就結(jié)束。

到此這篇關(guān)于python yield迭代器詳解的文章就介紹到這了,更多相關(guān)python yield 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Pandas中map, applymap and apply的區(qū)別

    淺談Pandas中map, applymap and apply的區(qū)別

    下面小編就為大家分享一篇淺談Pandas中map, applymap and apply的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • python2.7的編碼問(wèn)題與解決方法

    python2.7的編碼問(wèn)題與解決方法

    這篇文章主要介紹了在python2.7中遇到的編碼問(wèn)題與解決方法,文章介紹了直接在python文件內(nèi)修改系統(tǒng)編碼和在輸入輸出的時(shí)候,修改編碼格式的方法,有需要的朋友們可以參考借鑒。
    2016-10-10
  • 利用Python開發(fā)一個(gè)功能全面的Markdown編輯工具

    利用Python開發(fā)一個(gè)功能全面的Markdown編輯工具

    這篇文章主要為大家詳細(xì)介紹了如何利用Python開發(fā)一個(gè)功能全面的Markdown編輯工具,支持Markdown內(nèi)容的編輯,HTML預(yù)覽等功能,需要的可以參考下
    2025-03-03
  • Python獲取Windows桌面路徑的三種方法

    Python獲取Windows桌面路徑的三種方法

    在日常編程工作中,有時(shí)我們需要將文件或數(shù)據(jù)自動(dòng)保存到用戶的桌面上以便于快速訪問(wèn),在 Windows 操作系統(tǒng)中,可以通過(guò)多種方式來(lái)獲取桌面路徑,本文將詳細(xì)介紹三種常用的方法,需要的朋友可以參考下
    2024-12-12
  • Python基礎(chǔ)中的列表你了解嗎

    Python基礎(chǔ)中的列表你了解嗎

    這篇文章主要為大家介紹了Python基礎(chǔ)中的列表列表,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Python中的getter和setter的方法使用詳解

    Python中的getter和setter的方法使用詳解

    基本上,在面向?qū)ο缶幊陶Z(yǔ)言中,使用setter和getter方法的主要目的是為了確保數(shù)據(jù)的封裝,這篇文章主要介紹了Python的getter和setter的方法使用詳解,需要的朋友可以參考下
    2022-12-12
  • Flask-SocketIO服務(wù)端安裝及使用代碼示例

    Flask-SocketIO服務(wù)端安裝及使用代碼示例

    這篇文章主要介紹了Flask-SocketIO服務(wù)端安裝及使用代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • matplotlib繪制符合論文要求的圖片實(shí)例(必看篇)

    matplotlib繪制符合論文要求的圖片實(shí)例(必看篇)

    下面小編就為大家?guī)?lái)一篇matplotlib繪制符合論文要求的圖片實(shí)例(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • python:socket傳輸大文件示例

    python:socket傳輸大文件示例

    本篇文章主要介紹了python:socket傳輸大文件示例,具有一定的參考價(jià)值,有興趣的可以了解一下,
    2017-01-01
  • Pandas之StyleFrame如何設(shè)置表格樣式

    Pandas之StyleFrame如何設(shè)置表格樣式

    這篇文章主要介紹了Pandas之StyleFrame如何設(shè)置表格樣式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07

最新評(píng)論

比如县| 思茅市| 崇明县| 墨竹工卡县| 应城市| 兴和县| 宁都县| 渑池县| 建昌县| 清苑县| 筠连县| 郸城县| 许昌市| 桐城市| 万源市| 巴彦县| 鲜城| 凌云县| 井研县| 通城县| 正宁县| 汶川县| 湖口县| 德清县| 洪江市| 山西省| 内江市| 南华县| 循化| 泸西县| 涿州市| 乡宁县| 杨浦区| 蚌埠市| 许昌县| 红原县| 攀枝花市| 深泽县| 建瓯市| 吉木乃县| 郎溪县|