這個問題在這里已經有了答案: 在生成器函式上使用 next() (2 個回答) 2 小時前關閉。
生成器函式:
def getPositiveCount():
n = 0
while n<100:
yield n
n =1
在next(..)方法中呼叫時,上面的生成器函式沒有達到預期的效果。為什么下一次呼叫總是回傳 0?
print(next(getPositiveCount())) # prints 0
print(next(getPositiveCount())) # prints 0; should've printed 1
print(next(getPositiveCount())) # prints 0; should've printed 2
但是,如果我將其設定為回圈,它就可以正常作業:
for i in getPositiveCount():
print(i)
# prints 0,1,2 ... 99
這也再次讓我問,生成器函式是否與生成器運算式相同(通常使用范圍、xrange 或類似型別的內置函式)?例如,next生成器運算式中的呼叫完美地作業:
squares = (n** 2 for n in range(5))
print(next(squares)) # 0
print(next(squares)) # 1
print(next(squares)) # 4
uj5u.com熱心網友回復:
每次呼叫getPositiveCount()都會創建一個全新的生成器。你在想這個:
gen = getPositiveCount()
print(next(gen))
print(next(gen))
print(next(gen))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/397235.html
上一篇:PythonBeautifulsoup抓取腳本解包、硬編碼和復制
下一篇:兩個相同的表產生不同的DP結果
