我想在一个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获取值。
如果可能,请告诉我,如果没有,请告诉我。提前谢谢。
答案 0 :(得分:8)
如果你正在使用Python 2,你可以使用zip
(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)