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

12|迭代器、生成器与 `yield`

学 Python 时,你大概率已经写过很多这样的代码:

foritemin[1,2,3]:print(item)

看起来很自然,但如果你往深一点想,会发现两个问题:

  • for到底是怎么一个一个取值的?
  • 为什么有些对象能循环,有些对象不能?

继续往后学,你还会遇到一个关键词:

yield

很多人第一次看到生成器时,会觉得它像“会暂停的函数”,但又说不清到底哪里不一样。

这篇文章我们就把这条链路讲清楚:

  • 可迭代对象
  • 迭代器
  • 生成器
  • yield

一、什么是可迭代对象

最简单的理解:

能被for循环遍历的对象,通常可以叫可迭代对象。

比如:

nums=[1,2,3]name="Python"student={"name":"Tom","age":18}

这些对象都能被遍历:

forxinnums:print(x)forchinname:print(ch)forkeyinstudent:print(key)

常见可迭代对象有:

  • 列表
  • 元组
  • 字符串
  • 字典
  • 集合
  • range()对象

二、什么是迭代器

迭代器可以理解成:

一个能不断“取下一个值”的对象。

Python 中可以用iter()把可迭代对象转换成迭代器。

nums=[10,20,30]it=iter(nums)print(next(it))print(next(it))
http://www.jsqmd.com/news/740370/

相关文章:

  • Switch游戏文件终极管理方案:NSC_BUILDER完全指南
  • AI全栈实战:从数据到部署的机器学习项目开发指南
  • 为什么93%的PHP团队在2026年Q1紧急重构LLM接入层?Swoole长连接状态同步失效的5个隐蔽陷阱曝光
  • 终极指南:CefFlashBrowser - 基于CEF架构的专业Flash浏览器与SOL存档管理解决方案
  • 北京抖音短视频代运营服务商实力排行实测盘点 - 奔跑123
  • 从‘弹个窗’到‘偷Cookie’:用Burp插件xssValidator实战还原三种XSS漏洞的完整攻击链
  • 内网渗透测试“瑞士军刀”?实战演示用Golin从端口扫描到漏洞利用的完整链路
  • UVM仿真卡住了?别慌!手把手教你定位并解决PH_TIMEOUT超时错误
  • halcon语法
  • 炉石传说脚本:如何通过模块化架构与智能算法实现自动化对战
  • 别只盯着On-CPU了!用perf生成Off-CPU火焰图,揪出程序“等待”的元凶
  • QTTabBar技术解析:为Windows资源管理器注入现代化工作流引擎
  • 多语言语义模型实战指南:paraphrase-multilingual-MiniLM-L12-v2如何重塑全球化AI应用
  • 新手如何通过模型广场快速选择适合任务的大模型
  • Qwen大模型KL惩罚调参实战与优化策略
  • Ark-Pets:让明日方舟干员成为你的智能桌面伙伴
  • 如何在5分钟内为Jellyfin安装智能中文字幕插件:小白也能懂的完整指南
  • 从CMSIS_V1到V2:在STM32CubeMX的FreeRTOS配置里,你的选择真的对吗?
  • 利用 Taotoken 统一 API 管理多个内部应用的 AI 调用
  • ap_vld ap_ack ap_hs使用
  • 终极指南:如何快速合并B站缓存视频并保留弹幕播放
  • DSP在交流电机矢量控制中的关键技术解析
  • 别再只盯着故障码了!手把手教你用UDS 0x19 0x04服务读取DTC快照(含FFD解析)
  • SpringBoot+Redis实战:手把手教你用黑马点评项目搞定缓存穿透、击穿、雪崩三大难题
  • 从源码到实践:手把手拆解FreeRTOS v10.x内核,搞懂任务切换与中断处理的底层逻辑
  • Honcho开源智能体记忆库:构建有状态AI的长期记忆与状态管理
  • 5分钟快速上手:SD-PPP插件让Photoshop AI绘图效率提升300%
  • 力扣-1047.删除字符串中的所有相邻重复元素
  • 华硕笔记本终极优化指南:如何用G-Helper提升性能与续航
  • 从零构建轻量级监控告警系统:Go语言实现与生产实践