news 2026/6/1 8:58:02

2iterable iterator 可迭代对象与迭代器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2iterable iterator 可迭代对象与迭代器

1. iterable 可迭代对象

  • 支持for遍历
  • 不支持next()
  • 内置方法:__iter__

常见可迭代对象

list、tuple、str、set、range、map、filter、open('file')、iterator、generator

转为迭代器

语法:iter(可迭代对象)本质:额外增加__next__方法


2. iterator 迭代器

  • 支持for遍历
  • 支持next()
  • 内置方法:__iter__+__next__
  • 特性:一次性数据,用完即空

常见迭代器

iter ()、map、filter、zip、enumerate、reversed、生成器

会消耗迭代器的操作

next ()、for 循环、list ()、sum ()、max ()、min ()、解包*g


3. generator 生成器(特殊迭代器)

生成器函数

python

运行

def gen(): i = 1 while True: yield i i += 1

调用gen()→ 得到生成器对象

基础使用

python

运行

g = gen() next(g) for x in g: ...

4. non-iterable 不可迭代对象

int、float、bool、None、普通函数对象(非生成器)

5.拆包

x, y, *z= 可迭代对象*z 永远返回列表

6.循环

while

i = 1 while i<5: 另外循环 i+=1

for

flag = True for n in range(a,b): if xxx: flag=False break

for i in range(1,5)不包含5

for i in range(len(list)) -->i相当于索引了

循环遍历一般不执行remove操作,借助切片产生副本,通过本体去删除,list[:]


7. 重点总结

  1. 可迭代对象:支持for遍历 支持unpack拆包
  2. 迭代器:同时支持for遍历 +next()取值
  3. 迭代器数据单向读取,消耗后不可逆
  4. 生成器属于迭代器的子类
  5. iter()函数:将可迭代对象转为迭代器(补充__next__方法)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/1 8:54:20

十万吨巨轮偏偏烧“边角料”?

一艘十万吨级的远洋巨轮&#xff0c;不烧“精粮”&#xff0c;偏偏烧“边角料”&#xff1f;这不是笑话&#xff0c;而是全球航运业的常态。 这里的“边角料”&#xff0c;指的就是重油&#xff0c;也叫燃料油。 一、什么是“边角料”&#xff1f; 在石油炼化过程中&#xff0c…

作者头像 李华
网站建设 2026/6/1 8:51:11

Android开发转AI Agent:第4天——LLM的“记忆“其实是个假象

作者&#xff1a;一位Android开发工程师 | 2026年5月31日 系列&#xff1a;第3天已掌握system prompt&#xff0c;本篇拆解多轮对话的底层原理前言 前三天我学会了控制LLM的输出行为&#xff08;temperature&#xff09;、人格设定&#xff08;system prompt&#xff09;、输出…

作者头像 李华
网站建设 2026/6/1 8:50:59

KNX新手避坑指南:ETS5项目从导入设备到调试上电的全流程踩坑记录

KNX新手避坑指南&#xff1a;ETS5项目从导入设备到调试上电的全流程踩坑记录 当你第一次打开ETS5软件&#xff0c;准备开启KNX智能家居项目时&#xff0c;可能会被那些专业术语和复杂配置搞得一头雾水。作为过来人&#xff0c;我完全理解这种感受——毕竟谁没有在深夜对着报错信…

作者头像 李华
网站建设 2026/6/1 8:49:59

std::atomic_ref 深度技术报告

std::atomic_ref 深度技术报告 std::atomic_ref 是 C20 标准引入的一个强力工具&#xff0c;它允许开发者在不改变原始对象类型的前提下&#xff0c;对非原子对象执行原子操作。它是对现有并发编程模型的重要补充&#xff0c;解决了“如何对已有内存区域进行原子访问”这一长期…

作者头像 李华
网站建设 2026/6/1 8:49:57

拒绝性能损耗!用 CRTP 开启 C++ 的“静态多态”黑科技

在 C 开发中&#xff0c;我们总是试图在“高抽象”与“高性能”之间寻找平衡。你可能习惯了使用 virtual 函数和继承来实现多态&#xff0c;但有没有想过&#xff0c;那个隐藏的 vtable&#xff08;虚函数表&#xff09; 指针和运行时查找机制&#xff0c;其实正在悄悄吞噬你的…

作者头像 李华