提问
例如,我有以下代码:def functionx(n):
i = 0
while i < 3:
n += 2
yield n
i += 1
for i in functionx(x):
op2 = i
for m in functionx(y):
op1 = m
然后将op2和op1相加,例如,但具有第一个收益率,然后对第二个收益率做同样的事情,直到我命中3
最佳答案
您可以使用itertools.izip
.它确实可以满足您的需求.它同时但懒惰地迭代两个迭代器.
from itertools import izip
for i, m in izip(functionx(x), functionx(y)):
print i + m
python 2.x中的zip和itertools.izip之间的区别是
def functionx(n):
i = 0
while i < 3:
n += 2
print n
yield n
i += 1
使用zip,
for i, m in zip(functionx(3), functionx(3)):
print "Sum", i + m
输出量
5
5
7
7
9
9
Sum 10
Sum 14
Sum 18
使用itertools.izip,
从itertools导入izip
对于izip(functionx(3),functionx(3))中的i,m:
打印“ Sum”,我是
输出量
5
5
Sum 10
7
7
Sum 14
9
9
Sum 18
如您所见,itertools.izip仅在需要时进行迭代.
注意:在Python 3.x中,没有izip,zip本身的默认行为与izip相似.