首页 > 解决方案 > Python:在生成器的开头插入元素

问题描述

如果我有发电机,例如:

g = (i for i in range(10))

后来我想更新生成器,以便产生的第一个元素现在是其他一些元素,最“pythonic”的方法是什么?

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

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

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

标签: pythongenerator

解决方案


你可以用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]

推荐阅读