gpt4 book ai didi

python - 一起循环两个生成器

转载 作者:IT老高 更新时间:2023-10-28 20:45:40 28 4
gpt4 key购买 nike

我有两个生成器,分别是 A()B()。我想一起迭代两个生成器。比如:

for a,b in A(),B():    # I know this is wrong
#do processing on a and b

一种方法是将两个函数的结果存储在列表中,然后遍历合并的列表。像这样的:

resA = [a for a in A()]
resB = [b for b in B()]
for a,b in zip(resA, resB):
#do stuff

如果您想知道,那么是的,这两个函数都产生相同数量的值。

但我不能使用这种方法,因为 A()/B() 返回的值太多。将它们存储在列表中会耗尽内存,这就是我使用生成器的原因。

有没有办法同时遍历两个生成器?

最佳答案

几乎在那里。在 Python 3 中,只需将生成器传递给 zip():

for a, b in zip(A(), B()):

zip() 接受任何可迭代的,而不仅仅是列表。它会一个一个地消耗生成器。

在 Python 2 中,使用 itertools.izip() :

from itertools import izip

for a, b in izip(A(), B()):

顺便说一句,将生成器变成列表就像 list(generator);不需要在那里使用列表推导。

关于python - 一起循环两个生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20910213/

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