Python:在生成器的开头插入元素

4
如果我有一个生成器,例如:
g = (i for i in range(10))

我想更新生成器,使得第一个产生的元素是其他元素,什么是最符合Python风格的做法?

显然,我可以定义一个基本的生成器扩展函数,如下所示:

def extend(generator, new_elements):
    for element in new_elements:
        yield element
    for element in generator:
        yield element

但我想知道这是否必要,或者是否有更好的方法来做到这一点?

2个回答

4
您可以使用itertools.chain完成此操作:
>>> from itertools import chain
>>> g = (i for i in range(10))
>>> list(chain(['a','b','c'], g))
['a', 'b', 'c', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2
您可以使用以下函数:
def chain(*iterables):
    for it in iterables:
        yield from it

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接