我有两个功能:
def a():
while True:
yield stuff
def b():
while True:
yield otherstuff
我想要一个循环,它从存储在 a for a() 和 b for b() 中的每个函数中收集一个产量;例如。如果我嵌套调用它们的 for 循环,它会在每次第一个循环循环时重新启动第二个生成器。我可以帮忙吗?
谢谢!
我有两个功能:
def a():
while True:
yield stuff
def b():
while True:
yield otherstuff
我想要一个循环,它从存储在 a for a() 和 b for b() 中的每个函数中收集一个产量;例如。如果我嵌套调用它们的 for 循环,它会在每次第一个循环循环时重新启动第二个生成器。我可以帮忙吗?
谢谢!
您可以使用itertools.izip(...)
将这些值压缩在一起。
>>> def a():
for i in xrange(10):
yield i
>>> def b():
for i in xrange(10, 20):
yield i
>>> from itertools import izip
>>> for i, j in izip(a(), b()):
print i, j
0 10
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
9 19
for x, y in zip(a(), b()):
这就像同时循环任意两个序列。(在迭代之前,您可能希望使用itertools.izip
或from future_builtins import zip
避免将所有项目收集到一个大列表中。)