python之yield表達(dá)式學(xué)習(xí)
python中有一個(gè)略微奇怪的表達(dá)式叫yield expression,本文就來(lái)探究一下這是個(gè)什么東西。一步一步來(lái)。
iterable
mylist = [1,2,3]
for item in mylist:
print str(item)
mylist是一個(gè)列表(list),我們可以逐條取出每一個(gè)item,這個(gè)過(guò)程叫做iteration。像list這樣可以用”for…in…”依次遍歷的對(duì)象被稱為iterable,其他的iterable還有string、tuple、dict等。iterable的一個(gè)特點(diǎn)是所有的item會(huì)存儲(chǔ)到內(nèi)存中,這樣會(huì)產(chǎn)生一些不便和不利的地方,于是催生了generator(后面講到)。
list comprehension(列表推導(dǎo)式)
mylist = [x*x for x in range(3)]
表達(dá)式右邊是一個(gè)for循環(huán)的簡(jiǎn)寫形式,用[]包裹起來(lái)(稱為list comprehension),表達(dá)式的值是一個(gè)list,我們可以像普通list那樣使用”for…in…”遍歷其元素,如:
for item in mylist:
print str(item)
generator
generator
對(duì)上面的list comprehension稍作修改:
mygenerator = (x*x for x in range(3))
for item in mygenerator:
print item
可以看到只是把[]換成了(),這時(shí)表達(dá)式的值不再是list,而是一個(gè)generator。
generator也屬于iterable,但是其調(diào)用方式非常特別。
yield
def creatGenerator():
mylist = range(3)
for x in mylist:
yield x*x
mygenerator = creatGenerator()
for x in mygenerator:
print(x)
yield的使用方法和return是一樣的。但是(重點(diǎn)來(lái)了):
相關(guān)文章
Python實(shí)現(xiàn)的遠(yuǎn)程登錄windows系統(tǒng)功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的遠(yuǎn)程登錄windows系統(tǒng)功能,結(jié)合實(shí)例形式分析了Python基于wmi模塊的遠(yuǎn)程連接與進(jìn)程操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-06-06
python中csv文件數(shù)據(jù)顏色設(shè)置方式
這篇文章主要介紹了python中csv文件數(shù)據(jù)顏色設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Python使用wxPython和PyMuPDF提取PDF頁(yè)面指定頁(yè)數(shù)的內(nèi)容
在本篇博客中,我們將探討如何使用wxPython和PyMuPDF庫(kù)創(chuàng)建一個(gè)簡(jiǎn)單的Bokeh應(yīng)用程序,用于選擇PDF文件并提取指定頁(yè)面的內(nèi)容,并將提取的內(nèi)容顯示在文本框中,需要的朋友可以參考下2023-08-08
pytorch?K折交叉驗(yàn)證過(guò)程說(shuō)明及實(shí)現(xiàn)方式
這篇文章主要介紹了pytorch?K折交叉驗(yàn)證過(guò)程說(shuō)明及實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
教你用 Python 發(fā)送告警通知到微信的操作過(guò)程
大家都知道常見(jiàn)的告警方式有:郵件,電話,短信,微信,今天通過(guò)本文給大家介紹下Python 發(fā)送告警通知到微信的操作過(guò)程,感興趣的朋友一起看看吧2022-01-01
python實(shí)現(xiàn)sublime3的less編譯插件示例
這篇文章主要介紹了python實(shí)現(xiàn)sublime3的less編譯插件示例的相關(guān)資料2014-04-04
Python優(yōu)化技巧之利用ctypes提高執(zhí)行速度
ctypes是Python的一個(gè)外部庫(kù),提供和C語(yǔ)言兼容的數(shù)據(jù)類型,可以很方便地調(diào)用C DLL中的函數(shù)。今天我們就來(lái)詳細(xì)探討下ctypes庫(kù)的使用技巧2016-09-09
Python中內(nèi)存管理機(jī)制與優(yōu)化技巧分享
這篇文章主要來(lái)和大家簡(jiǎn)單聊一聊Python中的內(nèi)存管理,從而可以幫助大家寫出更高效,優(yōu)化內(nèi)存占用的 Python 代碼,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04

