Python迭代与迭代器核心
- 迭代的概念
- 含义:重复过程,每次迭代结果作为下次初始值
- 日常理解:类似产品迭代优化
- 编程应用:for语句遍历容器元素
- 常见迭代器类型
- 序列类型:列表、元组、字符串
- 映射类型:字典
- 其他:文件对象
迭代器的2个核心内置函数(BIF)
- iter()
- 作用:对容器对象调用,返回其迭代器
- next()
- 作用:调用迭代器,返回下一个元素
- 终止条件:无元素时抛出StopIteration异常
- for语句的底层原理
- 等价while循环:通过iter()获取迭代器,next()取值,捕获异常终止
迭代器的魔法方法
- 必实现的两个魔法方法
- iter:返回迭代器对象本身(return self)
- next:定义迭代规则,返回下一个元素,无元素时抛异常
实战:斐波那契数列迭代器
- 基础版迭代器实现
- 初始化:self.a=0,self.b=1
- iter:return self
- next:更新a和b的值,return self.a
- 问题:无终止条件,会无限迭代
- 优化版:控制迭代范围
- 初始化新增参数self.n(默认迭代上限)
- __next__中加判断:若self.a > self.n,抛StopIteration
- 效果:可指定迭代上限,避免无限循环