Python学习笔记-yield用法及优点
Python学习笔记-yield用法及优点
概述#
yield
用于定义生成器,它最终返回一个生成器对象,这个生成器对象可以被迭代。
例子#
# encoding:utf8 import sys n = 200 m = 1000 # 定义一个生成器,yield必须在函数中使用 def Generators(n): for i in range(n): if i%2==0: yield i print("参数为200生成器占用内存大小:",sys.getsizeof(Generators(n))) print("参数为1000生成器占用内存大小:",sys.getsizeof(Generators(m))) # 创建一个列表对象 listobj_1 = [i for i in range(n) if i%2==0] listobj_2 = [i for i in range(m) if i%2==0] print("参数为200列表占用内存大小:",sys.getsizeof(listobj_1)) print("参数为1000列表占用内存大小:",sys.getsizeof(listobj_2))
运行结果#
参数为200生成器占用内存大小: 200 参数为1000生成器占用内存大小: 200 参数为200列表占用内存大小: 920 参数为1000列表占用内存大小: 4216
优点#
- 内存效率:执行结果占用内存不一致,当数据量越大,列表占用的内存就越大,而生成器占用的内存基本上是恒定的
- 惰性求值:只在进行迭代时才生成计算结果,避免无效的计算
- 无限序列:对序列长度没有限制
本文来自博客园,作者:Jruing,转载请注明原文链接:https://www.cnblogs.com/jruing/p/18525809
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!