当前位置: 首页 > news >正文

py学习日志_生成器

介绍

生成器是用来生成数据的,用一个,生成一个,可节约大量内存空间

实现方式

推导式写法

类似于列表集合推导式,只不过换成了小括号

#列表推导式 #需求:生成1~5的数字 list1=[i for i in range(1,6)] print(list1) #[1,2,3,4,5] print(type(list1)) #<class 'list'> #生成器 #需求:生成1~5的数字 my_generator=(i for i in range(1,6)) print(my_generator) #打印出来的是地址值,不是元组 print(type(my_generator)) #<class 'generator>

yield关键字

临时存储所有数据,并放到生成器中,主要用于函数中,在函数中看到yield,那它就是生成器

#需求:自定义get_list函数,返回一个包含1~5整数的列表 def get_list(): my_list=[] for i in range(1,6): my_list.append(i) return my_list #需求:自定义get_generator函数,返回一个包含1~5整数的生成器 def get_generator(): #推导式写法 #return (i for i in range(1,6)) #yield写法 for i in range(1,6): yield i #把每个i都放到生成器中,函数结束后会返回生成器对象 #yield作用:1.创建生成器 2.把每个i的值放入其中 3.返回生成器

如何使用生成器获取数据

生成器的输出结果可以用指针来理解,从当前位置拿取数据

#方式1:next()函数,逐个拿去数据 my_generator=(i for i in range(1,6)) print(next(my_generator) #1 print(next(my_generator) #2 #方式2:遍历 for i in my_generator: print(i) #3,4,5

自定义数据迭代器(生成器)

# 需求:读取X.txt中的数据,并按照n条/批次,生成生成器 # 1.自定义data_loader函数,接收每批次的数据条数,获取生成器 import math def data_loader(batch_size): # batch_size:每批次数据条数 # return :返回生成器 # 1.1读取文件,获得所有数据 with open('D:/X.txt', 'r', encoding='utf-8') as scr_f: data_f = scr_f.readlines() # 一次性读取所有行,放到列表中 # 1.2计算数据总条数 line_all = len(data_f) # 1.3计算数据总批次,总批次=总条数/每批次条数,使用math.ceil()向上取整 batch_count = math.ceil(line_all /batch_size) # 1.4遍历总批次个数,获取每批次编号,例如:一共5批,则编号为:0,1,2,3,4 for batch_id in range(batch_count): # 1.5具体生成每批次的数据,然后通过yield放入生成器中,并返回生成器 yield data_f[batch_id * batch_size:batch_id * batch_size+batch_size]
http://www.jsqmd.com/news/450283/

相关文章:

  • 从开卷考试到智能思辨:RAG技术演进全景透析
  • 腾讯混元新范式,AI架构迎新变革
  • 这次终于选对!降AI率工具 千笔·专业降AI率智能体 VS 笔捷Ai,专为本科生打造
  • C++知识梳理-类与对象-对象特征
  • OpenClaw 创始人访谈:80% 的应用程式将会消失
  • 亚马逊TTS团队ICASSP 2022语音转换与数据增强研究
  • 圆环图配置详尽指南:从中心设置到渐变颜色应用
  • Python学习1(print、格式控制、input、类型转换)
  • 告别死记硬背!5款自主探索型科学实验平台,孩子玩着学出理科思维 - 品牌测评鉴赏家
  • C盘空间不足一键清理免费工具:2026年笔记本应急自救指南
  • 探索电机世界:定子永磁型双凸极永磁同步电机与磁通切换电机
  • 北京西服定制排行榜,西服定制店铺推荐
  • 谷歌 Pixel 10a:升级有限但价格亲民
  • 高考物理实验复习封神平台推荐!告别“读数火葬场”,20分稳拿不崩 - 品牌测评鉴赏家
  • NEAR AI开源IronClaw,强化AI Agent安全
  • 51单片机智能浇花器项目全解析
  • SQL逆袭:从传统走向前沿
  • 宝妈必藏|6个在家就能用的科学实验平台,免费好用不费妈 - 品牌测评鉴赏家
  • SpringBoot+Vue在线视频会议系统(含AI助手+敏感词过滤+即时通讯 多人在线会议(视频+语音+投屏) 2:集成DeepSeek大模型作为AI会议助手 3:智能敏感词过滤系统(可自定义规则)
  • 原生Java框架:JBoltAI助力Java开发公司AI转型
  • 无线低功耗大容量数据采集记录系统设计方案
  • “养龙虾”OpenClaw+华为泰山2280(现货)+麒麟操作系统V10,保姆级部署操作指南
  • AI 代码迁移:理想与现实的差距
  • 苹果3月活动,新品能否带来惊喜?
  • pcb硬金工艺详解 硬金与沉金区别
  • 小县城AI热潮,真实含量几何?
  • 秃鹰搜索算法优化极限学习机实现多输入单输出拟合预测
  • OpenClaw是什么?OpenClaw能做什么?2026年OpenClaw部署保姆级教程
  • 移动机器人轨迹跟踪:Backstepping算法的MATLAB实践
  • JBoltAI 4.1 企业实际使用体验及功能解析