【发布时间】:2020-09-07 23:12:06
【问题描述】:
有什么方法可以在不循环或调用 next() n 次的情况下获取生成器的下 n 个值? 在这种情况下生成器是无限的,不能转换为列表。 这是生成器函数:
def f():
a, b = 0, 1
while True:
yield a
a, b = b, a + b
以下循环都给出了预期的结果,但我想知道是否有其他方法可以做到这一点。
gen = f()
n = 0
while n < 10:
print(next(gen))
n += 1
或者..
for n, i in enumerate(f()):
if n < 10:
print(i)
else:
break
【问题讨论】:
-
既然生成器生成斐波那契数,如果你知道前两个元素
a,b,你可以通过a+b推断出第三个元素。 -
itertools.islice是您要找的。span> -
@Ch3steR 谢谢.. 这确实是我要找的