擅长:python、mysql、java
<p>我也同意不需要itertools。</p>
<p>但为什么停在2点?</p>
<pre><code> def tmerge(*iterators):
for values in zip(*iterators):
for value in values:
yield value
</code></pre>
<p>处理从0到上的任意数量的迭代器。</p>
<p>更新:DOH!一位评论人士指出,除非所有迭代器的长度都相同,否则这是行不通的。</p>
<p>正确的代码是:</p>
<pre><code>def tmerge(*iterators):
empty = {}
for values in itertools.izip_longest(*iterators, fillvalue=empty):
for value in values:
if value is not empty:
yield value
</code></pre>
<p>是的,我只是用了不等长的列表和一个包含{}的列表。</p>