例如,我有以下代码:
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
进行求和,例如,但对于第一个屈服点,然后对第二个屈服点进行求和,直到i
达到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
对于i,m in izip(函数x(3),函数x(3)):
打印“和”,I+M
输出
5
5
Sum 10
7
7
Sum 14
9
9
Sum 18
如您所见,
itertools.izip
只按需迭代。注意:在python 3.x中,没有
izip
,默认的zip
行为与izip
类似。