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+=1for
flag = True for n in range(a,b): if xxx: flag=False breakfor i in range(1,5)不包含5
for i in range(len(list)) -->i相当于索引了
循环遍历一般不执行remove操作,借助切片产生副本,通过本体去删除,list[:]
7. 重点总结
- 可迭代对象:支持
for遍历 支持unpack拆包 - 迭代器:同时支持
for遍历 +next()取值 - 迭代器数据单向读取,消耗后不可逆
- 生成器属于迭代器的子类
iter()函数:将可迭代对象转为迭代器(补充__next__方法)
