Concatenate generator and item

2019-02-05 14:08发布

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

3条回答
爱情/是我丢掉的垃圾
2楼-- · 2019-02-05 14:31

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
查看更多
\"骚年 ilove
3楼-- · 2019-02-05 14:32
登录 后发表回答