擅长:python、mysql、java
<p>问题是生成器永远不会结束,并且生成器表达式不断从中获取输出,即使在<code>i</code>达到其上限之后也是如此</p>
<p>一种简单的方法是使用<a href="https://docs.python.org/3/library/itertools.html#itertools.islice" rel="nofollow noreferrer">itertools.islice</a>:</p>
<pre><code>from itertools import islice
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 = islice(fibiter, 10, 15)
print(list(fibiter_in_range))
# [55, 89, 144, 233, 377]
</code></pre>