例如,我有以下代码:

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

然后对op2op1进行求和,例如,但对于第一个屈服点,然后对第二个屈服点进行求和,直到i达到3

最佳答案

您可以使用itertools.izip。它能满足你的要求。它同时在两个迭代器上迭代,但很慢。

from itertools import izip

for i, m in izip(functionx(x), functionx(y)):
     print i + m

Python 2.x中zipitertools.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类似。

10-05 21:36