连接生成器和项
我有一个生成器(叫做 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