连接生成器和项目

Tar*_*rGz 28 python iterator list-comprehension generator

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

i for i in tuple(my_generator) + (my_value,)
Run Code Online (Sandbox Code Playgroud)

问题是,据我所知,这会创建3个元组,只是立即丢弃它们,并且还会复制"my_generator"中的项目一次.

更好的approch将是:

def con(seq, item):
    for i in seq:
        yield seq
    yield item

i for i in con(my_generator, my_value)
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*off 42

itertools.chain 将几个序列视为单个序列.

所以你可以用它作为:

import itertools

def my_generator():
    yield 1
    yield 2

for i in itertools.chain(my_generator(), [5]):
    print i
Run Code Online (Sandbox Code Playgroud)

哪个会输出:

1
2
5
Run Code Online (Sandbox Code Playgroud)


Ark*_*ady 5

试试itertools.chain(*iterables)。文档在这里:http : //docs.python.org/library/itertools.html#itertools.chain