如何在python中组合来自两个生成器的元组

时间:2014-07-16 23:35:32

标签: python generator

我想在一个for循环中使用两个生成器。类似的东西:

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获取值(对于所有六个变量),直到它耗尽,然后开始从f2获取值。

如果可能,请告诉我,如果没有,请告诉我。提前谢谢。

1 个答案:

答案 0 :(得分:8)

如果你正在使用Python 2,你可以使用zipitertools.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)