Генератор конкатенации и элемент
У меня есть генератор (числа) и значение (число). Я хотел бы повторить их, как если бы они были одной последовательностью:
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)
Но мне было интересно, можно ли это сделать без этого определения функции
Ответы
Ответ 1
itertools.chain
обрабатывает несколько последовательностей как одну последовательность.
Итак, вы можете использовать его как:
import itertools
def my_generator():
yield 1
yield 2
for i in itertools.chain(my_generator(), [5]):
print i
который выводит:
1
2
5
Ответ 2
itertools.chain()
Ответ 3
Попробуйте itertools.chain(*iterables)
. Документы здесь: http://docs.python.org/library/itertools.html#itertools.chain