迭代器的结尾
StopIteration异常发生,表示迭代器结束
next 获取迭代器下一个值
代理迭代
定义__iter__方法可以将迭代操作代理到容器上
使用生成器构建迭代模型
添加一个 yield语句可一个普通函数转换为一个生成器
反向迭代
通过实现__reversed__方法可以实现类上的反向迭代,调用时采用reversed函数
迭代器切片
itertools.islice
迭代器是不可逆转的,切片也会消耗传入的数据
跳过可迭代对象的开始部分
from itertools import dropwhile
for line in dropwhile(lambda line: line.startswith('#'), f)
迭代器输出集合排列
from itertools import permutations
迭代器输出集合组合
from itertools import combinations
迭代器输出集合组合,元素可以选择多次
itertools.combinations_with_replacement
序列索引值迭代
enumerate
多个序列同时迭代
zip 压缩两个序列 同时迭代,长度与短序列一致
itertools.zip_longest 长度与长序列一致
不同集合上元素的遍历
from itertools import chain
for x in chain(a,b):
print(x)
yield from it ##返回生成器it的所有值
检查是否为可迭代对象
from collections import Iterable
isinstance(x, Iterable)
排除字符串和字节迭代对象
isinstance(x, ignore_types)
合并排序序列的顺序迭代
for c in heapq.merge(a, b)
迭代器替代while循环
for chunk in iter(lambda: f.read(10), '')
iter接收一个可选的callable对象和一个标记值作为输入参数