我有一个生成器(数字)和一个值(数字)。我想迭代这些,好像它们是一个序列:
i for i in tuple(my_generator) + (my_value,)
问题是,据我所知,这只会立即丢弃3个元组,并且还会复制“my_generator”中的项目一次。
更好的方法是:
def con(seq, item):
for i in seq:
yield seq
yield item
i for i in con(my_generator, my_value)
但我想知道没有那个功能定义是否可以做到这一点
答案 0 :(得分:42)
itertools.chain
将多个序列视为单个序列。
所以你可以用它作为:
import itertools
def my_generator():
yield 1
yield 2
for i in itertools.chain(my_generator(), [5]):
print i
将输出:
1
2
5
答案 1 :(得分:6)
答案 2 :(得分:4)
试试itertools.chain(*iterables)
。文档:http://docs.python.org/library/itertools.html#itertools.chain