python 三元運(yùn)算符、列表解析、生成器表達(dá)式

三元運(yùn)算符 列表解析 生成器表達(dá)式

生成器
可以理解為一種數(shù)據(jù)類型,這種數(shù)據(jù)類型自動實(shí)現(xiàn)了迭代器協(xié)議(其他的數(shù)據(jù)類型需要調(diào)用自己內(nèi)置的iter方法),所以生成器是可迭代對象

生成器分類再python中的表現(xiàn)形式:(python有兩種不同的方式提供生成器)
1、生成器函數(shù):常規(guī)函數(shù)定義,但是使用yield語句而不是return返回的結(jié)果,yeild語句一次返回一個結(jié)果,在每個結(jié)果中間,掛起函數(shù)的狀態(tài),以便下次從他離開的地方繼續(xù)執(zhí)行。
2.生成器表達(dá)式:類似于類表推導(dǎo),但是生成器返回按需生產(chǎn)結(jié)果的一個對象,而不是一次構(gòu)建一個結(jié)果列表

為什么使用生成器以及生成器得優(yōu)點(diǎn)
python 使用生成器對延遲操作提供支持,所謂延遲操作,是指在需要的時候產(chǎn)生的結(jié)果,而不是立即產(chǎn)生的結(jié)果,這也是生成器的好處

生成器函數(shù)
可以yield 多次

def test():
    yield 1
    yield 2
    yield 3
g = test()
print(g)
print(g.__next__())

生成器表達(dá)式 和列表解析

列表解析

gglist = []

for i in range(10):
    gglist.append('雞蛋%s' %i)

print(gglist)

gg_s = [ '雞蛋%s' %i for i in range(10) if i >5]

print(gg_s)

生成器表達(dá)式 比列表解析更節(jié)省內(nèi)存

laomuji = ( '雞蛋%s' %i for i in range(10) if i >5)
print(laomuji.__next__())
print(laomuji.__next__())
print(laomuji.__next__())

三元表達(dá)式 沒有四元表達(dá)式

name = 'alex'
a ='sb' if name=='alex' else 'shuaige'
print(a)

生成器小結(jié)
1、可迭代對象
2、實(shí)現(xiàn)了延遲計(jì)算,省內(nèi)存
3生成器本質(zhì)和其他數(shù)據(jù)類型一樣,能實(shí)現(xiàn)了迭代器協(xié)議,只不過生成器附加了一個延遲計(jì)算省內(nèi)存的好處,其余的可迭代對象可沒有這點(diǎn)好處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容