python迭代器中Yield方法怎么用?
Yield用于返回數(shù)據(jù),程序執(zhí)行到y(tǒng)ield后,返回結(jié)果,記住當(dāng)前狀態(tài),暫停執(zhí)行,下次調(diào)用時,根據(jù)上次的狀態(tài),返回下一個結(jié)果,記住新的狀態(tài),暫停執(zhí)行。通俗的講,就是調(diào)用一次,返回一個數(shù)據(jù),再調(diào)用一次,返回下一個數(shù)據(jù)。沒錯,類似我們?nèi)粘I钪械臄D牙膏。
下面就為大家詳細(xì)介紹關(guān)于Yield方法的使用。
定義生成器函數(shù):
defgetData():
listData=(x**2forxinrange(6))
forxinlistData:
yieldx
獲取生成器:
genData=getData()
輸出生成器的數(shù)據(jù):
print(genData.__next__())
繼續(xù)輸出生成器的數(shù)據(jù):
print(next(genData))
遍歷輸出:
genData1=getData()
forxingenData1:
print(x)
代碼執(zhí)行結(jié)果如下:
0
1
0
1
4
9
16
25
總結(jié):
迭代器只有在下次調(diào)用的時候才會去計算本次生成的值,而不是像列表那樣預(yù)先生成所有的值。這種方式需要將所有的值預(yù)先保存在列表中,當(dāng)列表很大的時候,非常消耗內(nèi)存。
上述就是python中迭代器中Yield方法的全部用法啦,感興趣的小伙伴可以多多嘗試使用哦~更多Python學(xué)習(xí)教程請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。