Python: вставить элемент (ы) в начале генератора - PullRequest
3 голосов
/ 09 октября 2019

Если у меня есть генератор, например:

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

и позже, я хочу обновить генератор так, чтобы первый полученный элемент (ы) теперь был каким-то другим элементом (элементами), что является наиболее"питонический" способ сделать это?

Ясно, что я мог бы определить базовую функцию генератора-расширителя, такую ​​как:

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

, но мне интересно, если это необходимо или есть что-то лучшеспособ сделать это?

Ответы [ 2 ]

4 голосов
/ 09 октября 2019

Вы можете использовать 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]
1 голос
/ 10 октября 2019

Вы можете использовать следующую функцию:

def chain(*iterables):
    for it in iterables:
        yield from it
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...