连接生成器和项

30 投票
3 回答
15448 浏览
提问于 2025-04-15 20:25

我有一个生成器(叫做 numbers)和一个值(叫做 number)。我想把它们当作一个序列来遍历:

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

问题是,按照我的理解,这样做会创建三个元组,但马上就丢掉了它们,而且还会把“my_generator”里的项目复制一次。

更好的方法是:

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

i for i in con(my_generator, my_value)

不过我在想,是否有可能在不定义那个函数的情况下做到这一点。

3 个回答

5

itertools.chain() 是一个Python中的工具,可以把多个列表或者其他可迭代的东西(比如元组、集合等)连接在一起,形成一个新的可迭代对象。简单来说,就是把几个东西串联起来,让你可以一次性处理它们,就像把几条链子连在一起,形成一条长链子。

5

试试用 itertools.chain(*iterables)。详细说明可以查看这里:http://docs.python.org/library/itertools.html#itertools.chain

46

itertools.chain 是一个可以把多个序列当作一个序列来处理的工具。

所以你可以这样使用它:

import itertools

def my_generator():
    yield 1
    yield 2

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

这样会输出:

1
2
5

撰写回答