gpt4 book ai didi

python - 发电机的冗余使用? (Python)

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

假设我们做了以下事情:(如果这很愚蠢或者有更好的方法,请忽略,这是一个简化的例子)

from itertools import izip

def check(someList):
for item in someList:
yield item[0]

for items in izip(check(someHugeList1), check(someHugeList2)):
//some logic

既然 check 是一个生成器,那么使用 izip 是否多余?使用常规 zip 会同样好吗?

最佳答案

常规 zip() 会首先展开整个生成器。你不会想用一个巨大的或无穷无尽的发电机来做到这一点。

演示:

>>> def gen():
... print 'generating'
... yield 'a'
...
>>> gen()
<generator object gen at 0x10747f320>
>>> zip(gen(), gen())
generating
generating
[('a', 'a')]

请注意,直接创建生成器不会打印任何内容;生成器仍处于暂停状态。但是将生成器传递给 zip() 会立即产生输出,这只能通过完全迭代生成器来产生。

关于python - 发电机的冗余使用? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21025656/

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