如何在Python中合并来自两个生成器的元组
我想在一个循环里同时使用两个生成器,类似这样:
for a,b,c,d,e,f in f1(arg),f2(arg):
print a,b,c,d,e,f
这里的a、b、c、d和e是从f1里来的,而f是从f2里来的。我需要用到yield这个操作符,因为空间有限。
不过,上面的代码并不奏效。因为某种原因,它会一直从f1里取值(六个变量都取)直到f1用完,然后才开始从f2里取值。
请告诉我这是否可行,如果不可行,有没有其他解决办法。谢谢!
1 个回答
8
你可以使用 zip
函数(如果你用的是 Python 2,就用 itertools.izip
)来进行序列解包:
def f1(arg):
for i in range(10):
yield 1, 2, 3, 4, 5
def f2(arg):
for i in range(10):
yield 6
arg = 1
for (a, b, c, d, e), f in zip(f1(arg), f2(arg)):
print(a, b, c, d, e, f)