冗余使用发电机? (Python)
发布时间:2020-12-20 11:32:44 所属栏目:Python 来源:网络整理
导读:说我们做了以下事情:(忽略如果这是愚蠢的,或者如果有更好的方法,这是一个简化的例子) from itertools import izipdef check(someList): for item in someList: yield item[0]for items in izip(check(someHugeList1),check(someHugeList2)): //some logic 由
说我们做了以下事情:(忽略如果这是愚蠢的,或者如果有更好的方法,这是一个简化的例子)
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()会首先扩展整个生成器.你不希望用巨大的或无穷无尽的发电机做到这一点.
演示: >>> def gen(): ... print 'generating' ... yield 'a' ... >>> gen() <generator object gen at 0x10747f320> >>> zip(gen(),gen()) generating generating [('a','a')] 请注意,直接创建生成器不会打印任何内容;发电机仍处于暂停状态.但是将生成器传递给zip()会立即生成输出,只能通过完全迭代生成器来生成输出. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |