gpt4 book ai didi

python - 是否可以对迭代器求和?

转载 作者:太空宇宙 更新时间:2023-11-03 15:14:24 25 4
gpt4 key购买 nike

例如我有以下代码:

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 求和,但使用第一个 yield,然后对第二个做同样的操作,直到 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(functionx(3), functionx(3)): 打印“总和”,i + m

输出

5
5
Sum 10
7
7
Sum 14
9
9
Sum 18

如您所见,itertools.izip 仅按需迭代。

注意:在 Python 3.x 中,没有 izipzip 本身的默认行为类似于 压缩

关于python - 是否可以对迭代器求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22799796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com