1 概念
1. 容器
数据结构:多个元素组织在一块儿,而且提供了访问元素的方法
2. 可迭代对象 // 序列-->可迭代对象
实现了__iter__的对象,能够用在迭代工具中遍历
2. 迭代器 // 1. 访问集合元素的一种方式 2. 能够记住遍历状态
实现了__iter__和__next__的对象;能够显示调用next()返回下一项
3. 迭代协议
对象提供一个next()方法,要么返回下一项,要么StopIteration异常
4. 生成器 // 1. 自动实现了迭代器协议,能够直接调用next() 2. 有状态 3. 延迟计算
生成器是特殊的迭代器
*生成器函数* // 返回迭代器的函数
yield关键字返回值,每次返回一个结果,挂起函数中间状态,以便下次从他离开的地方继续执行
*生成器表达式*
() // 生成器表达式比列表解析更加节省内存
2 可迭代对象种类
字符串、列表、元祖、字典、集合、文件等,通常状况下都不是可迭代对象;能够有2种方式变为可迭代对象:
1> iter(上述对象) // 手动调用iter()将对象变为可迭代对象
2> 迭代工具 // 好比for循环
**for循环本质**
for循环本质:for循环做为迭代工具,内部会先调用__iter__()方法,而后调用__next__()方法一个个返回元素
3 迭代工具
*提供了一个通用的访问可迭代对象元素的方式*
1 for循环 2 列表解析 3 字典解析 4 内置函数 // map、zip、filter、sum、enumerate、in成员