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

