我有两个功能:
def a():
while True:
yield stuff
def b():
while True:
yield otherstuff
我希望有一个循环,它从a()中存储的每个函数收集一个yield,b();例如。如果我嵌套调用它们的for循环,它会在第一个循环循环时重新启动第二个生成器。我能帮忙吗?
谢谢!
答案 0 :(得分:6)
您可以使用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
答案 1 :(得分:3)
for x, y in zip(a(), b()):
就像同时循环任何两个序列一样。 (您可能希望使用itertools.izip
或from future_builtins import zip
来避免在迭代之前将所有项目收集到一个大列表中。)
答案 2 :(得分:1)