我正在努力理解生成器。我遇到了这个问题,需要一些循序渐进的解释。
问题要求创建一个名为odds
的生成器函数。当在for
循环中用尽时,从生成器函数创建的生成器对象应该产生第一个count
数字。对于这个问题,返回的第一个奇数应该是1。
我很难理解这个问题,从生成器函数创建的生成器对象应该在for
循环中使用耗尽时产生第一个count
数字,这意味着什么?我也想知道为什么我们需要count -= 1
在这个功能。
def odds(count):
i = 1
while True:
if i % 2:
count -= 1
yield i
if not count:
break
i += 1
生成器函数是简单的yield
值而不是return
值的函数,因此非常容易编写。例如:
def odds(count):
i = 1
for _ in range(count):
yield i
i += 2
for i in odds(10):
print(i)
使用这两者之间还有更多的区别。这里有一个更详细的比较:Python中Yield和Return的区别。
Stackoverflow不打算取代现有的教程或文档,所以为了更深入地了解生成器是如何工作的,我建议您参考有关该主题的教程,例如:如何在Python中使用生成器和yield。