【发布时间】:2021-04-03 17:58:04
【问题描述】:
我有这个 FibIter 生成器。我正在尝试使用生成器表达式创建第二个。
def FibIter():
yield 0
yield 1
x = 0
y = 1
while True:
result = x + y
x, y = y, result
yield result
fibiter = FibIter()
fibiter_in_range = (x for i, x in enumerate(fibiter) if 100000 < i <= 100020)
现在,如果我在下面运行代码,什么都不会发生。
print(list(fibiter_in_range))
如果我运行低于数字的代码,则会打印出来,但 for 循环不会结束。
for x in fibiter_in_range:
print(x)
我想我可以遍历fibiter_in_range,直到所有元素都被使用。
我对生成器有什么不明白的地方?如何优雅地创建 n 范围为 100000-100020 的斐波那契数的迭代器?
【问题讨论】: