yield的用法是什么
這篇文章將為大家詳細(xì)講解有關(guān)yield的用法是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)建站是一家專(zhuān)注于網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),遵義網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:遵義等地區(qū)。遵義做網(wǎng)站價(jià)格咨詢(xún):028-86922220
我們一起看兩個(gè)生成器相關(guān)的練習(xí),主要是練習(xí)一下 yield 的用法。
問(wèn)題 1
輸入一個(gè)數(shù)字 n,寫(xiě)一個(gè)程序判斷 0 到 n 之間的偶數(shù),并用逗號(hào)分隔來(lái)輸出。
比如輸入:10
輸出結(jié)果:0,2,4,6,8,10
題目分析
我們首先需要一個(gè)循環(huán),找到 10 以?xún)?nèi)的所有數(shù)字,然后判斷是否是偶數(shù)。題目要求用生成器的方式,我們只需要寫(xiě)一個(gè)生成器函數(shù),在找到符合條件的數(shù)字后,使用 yield 輸出。最后直接循環(huán)生成器,找到需要的值放入列表,最后用逗號(hào)分隔輸出即可。
參考
def EvenGenerator(n):
i = 0
while i <= n:
if i%2 == 0:
yield i
i += 1
n = int(input())
values = []
for i in EvenGenerator(n):
values.append(str(i))
print(",".join(values))
問(wèn)題 2
輸入一個(gè)數(shù)字 n,寫(xiě)一個(gè)程序判斷 0 到 n 之間的可以同時(shí)被 5 和 7 整除的數(shù)字,并用逗號(hào)分隔來(lái)輸出。
比如輸入:100
輸出結(jié)果:
0,35,70
題目分析
此題目和上一個(gè)類(lèi)似,你會(huì)發(fā)現(xiàn)這一次只是核心判斷條件有變化,輸入和輸出不一樣,但其實(shí)套路沒(méi)變,還是用一個(gè)生成器函數(shù),對(duì)應(yīng)條件的地方用 yield 把數(shù)據(jù)返回即可。
參考:
def NumGenerator(n):
for i in range(n+1):
if i%5 == 0 and i%7 == 0:
yield i
n = int(input())
values = []
for i in NumGenerator(n):
values.append(str(i))
print(",".join(values))
上述兩個(gè)練習(xí)都使用了 yield 把一個(gè)普通函數(shù),變成了 generator 函數(shù)。這樣 Python 解釋器在處理這些代碼時(shí),會(huì)在調(diào)用這個(gè)生成器的循環(huán)中,遇到 yield 就返回一次值,并保存當(dāng)前變量的狀態(tài),當(dāng)下一次循環(huán)到來(lái)時(shí),自動(dòng)從上一次的狀態(tài)繼續(xù)往后計(jì)算。也就是我們需要的結(jié)果了。
關(guān)于yield的用法是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
網(wǎng)頁(yè)名稱(chēng):yield的用法是什么
轉(zhuǎn)載來(lái)于:http://www.xueling.net.cn/article/pdeccg.html