冗余使用发电机? (Python)

冗余使用发电机? (Python),第1张

概述说我们做了以下事情:(忽略如果这是愚蠢的,或者如果有更好的方法,这是一个简化的例子) from itertools import izipdef check(someList): for item in someList: yield item[0]for items in izip(check(someHugeList1), check(someHugeList2 说我们做了以下事情:(忽略如果这是愚蠢的,或者如果有更好的方法,这是一个简化的例子)

from itertools import izipdef 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())generatinggenerating[('a','a')]

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

总结

以上是内存溢出为你收集整理的冗余使用发电机? (Python)全部内容,希望文章能够帮你解决冗余使用发电机? (Python)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193017.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存