我有两个迭代器,一个list
和一个itertools.count
对象(即无限值生成器)。我想将这两个合并到一个结果迭代器中,该迭代器将在两个迭代器之间交替产生值:
>>> import itertools
>>> c = itertools.count(1)
>>> items = ['foo', 'bar']
>>> merged = imerge(items, c) # the mythical "imerge"
>>> merged.next()
'foo'
>>> merged.next()
1
>>> merged.next()
'bar'
>>> merged.next()
2
>>> merged.next()
Traceback (most recent call last):
...
StopIteration
最简单、最简洁的方法是什么?
我也同意不需要itertools。
但为什么停在2点?
处理从0到上的任意数量的迭代器。
更新:DOH!一位评论人士指出,除非所有迭代器的长度都相同,否则这是行不通的。
正确的代码是:
是的,我只是用了不等长的列表和一个包含{}的列表。
你可以做一些@Pramod最初建议的事情。
这种方法的优点是,如果a和b都是无限的,就不会耗尽内存。
发电机能很好地解决你的问题。
相关问题 更多 >
编程相关推荐