Concatenate generator and item

2019-02-05 13:57发布

问题:

I have a generator (numbers) and a value (number). I would like to iterate over these as if they were one sequence:

i for i in tuple(my_generator) + (my_value,)

The problem is, as far as I undestand, this creates 3 tuples only to immediately discard them and also copies items in "my_generator" once.

Better approch would be:

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

i for i in con(my_generator, my_value)

But I was wondering whether it is possible to do it without that function definition

回答1:

itertools.chain treats several sequences as a single sequence.

So you could use it as:

import itertools

def my_generator():
    yield 1
    yield 2

for i in itertools.chain(my_generator(), [5]):
    print i

which would output:

1
2
5


回答2:

itertools.chain()



回答3:

Try itertools.chain(*iterables). Docs here: http://docs.python.org/library/itertools.html#itertools.chain