连接生成器和项目

时间:2010-03-14 18:39:25

标签: python iterator generator list-comprehension

我有一个生成器(数字)和一个值(数字)。我想迭代这些,好像它们是一个序列:

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)

但我想知道没有那个功能定义是否可以做到这一点

3 个答案:

答案 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