擅长:python、mysql、java
<p>使用<code>itertools.chain</code>可以相当容易地创建一个“预定时”迭代器:</p>
<pre><code>from itertools import chain
def primed(iterable):
"""Preprimes an iterator so the first value is calculated immediately
but not returned until the first iteration
"""
itr = iter(iterable)
try:
first = next(itr) # itr.next() in Python 2
except StopIteration:
return itr
return chain([first], itr)
>>> def g():
... for i in range(5):
... print("Next called")
... yield i
...
>>> x = primed(g())
Next called
>>> for i in x: print(i)
...
0
Next called
1
Next called
2
Next called
3
Next called
4
</code></pre>