python中迭代器的应用场景
1.迭代器的应用场景
1). 如果数列的数据规模巨大
2). 数列有规律,但是依靠列表推导式描述不出来
2.数学中有个著名的斐波拉契数列(Fibonacci),数列中第⼀个数0,第⼆个数1,其后的每⼀个数都可由前两个数相加得到:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
现在我们想要通过for...in...循环来遍历迭代斐波那契数列中的前n个数。那么这个斐波那契数列我们就可以⽤迭代器来实现,每次迭代都通过数学计算来⽣成下⼀个数。
classFibIterator(object):
"""fib数列迭代器"""
def __init__(self, n):
""""""
self.num1 = 0
self.num2 = 1
self.n = n # 用来保存迭代的总次数
self.i = 0 # 用来记录迭代次数
def __next__(self):
# 判断是否迭代结束,如果没有到达迭代次数,则返回数据
if self.i < self.n:
# 保存要返回的值
item = self.num1
# 计算num1, num2的值,方便下次迭代返回
self.num1, self.num2 = self.num2,self.num1 + self.num2
# 记录迭代次数
self.i += 1
return item
else:
# 到达了迭代次数,抛出异常
raise StopIteration
def __iter__(self):
return self
fib =FibIterator(20)
li = list(fib)
print(li)
python中迭代器的应用场景相关推荐
- python有关迭代器和生成器的面试题_【面试题 | Python中迭代器和生成器的区别?】- 环球网校...
[摘要]今天给大家解答一道Python常见的面试题,希望这个面试栏目,给那些准备面试的同学,提供一点点帮助!小编会从最基础的面试题开始,每天一题.如果参考答案不够好,或者有错误的话,麻烦大家可以在留言 ...
- python迭代器好处_关于Python中迭代器的作用
迭代器的定义:含有__iter__()方法和__next__()方法的就是迭代器,即(iterate) 含有__iter__()方法就可以使用for循环,即iterable(可迭代的) Iterabl ...
- python中迭代器有哪些_Python迭代器:什么是Python中的迭代器以及如何使用它?
Python编程语言已经扩展了创新的每一个方面,包括机器学习.数据科学.人工智能等,这些概念是Python作为编程语言取得成功的基石.在本文中,我们将通过以下概念来理解Pytho Python编程语言 ...
- pythonfor循环遍历list_为什么for循环可以遍历list:Python中迭代器与生成器
1 引言 只要你学了Python语言,就不会不知道for循环,也肯定用for循环来遍历一个列表(list),那为什么for循环可以遍历list,而不能遍历int类型对象呢?怎么让一个自定义的对象可遍历 ...
- python中迭代器的实现原理_Python 进阶应用教程
Python 中的迭代器实现原理 在数学中,集合表示由一个或多个确定的元素所构成的整体.在 Python 中,列表.元组.集合可以用于表示数学中的集合. 例如,分别使用列表.元组.集合表示了一个包含 ...
- python列表迭代器_关于Python中迭代器的作用
迭代器的定义:含有__iter__()方法和__next__()方法的就是迭代器,即(iterate) 含有__iter__()方法就可以使用for循环,即iterable(可迭代的) Iterabl ...
- 关于Python中迭代器的作用
迭代器的定义:含有__iter__()方法和__next__()方法的就是迭代器,即(iterate) 含有__iter__()方法就可以使用for循环,即iterable(可迭代的) Iterabl ...
- python中迭代器和可迭代对象的区别_Python 可迭代对象迭代器生成器的区别
生成器是一种特殊的迭代器,生成器自动实现了"迭代器协议"(即__iter__和next方法),不需要再手动实现两方法. 首先从字面意思来解释Iterable和Iterator的区别 ...
- 玩转Python中迭代器与迭代对象的使用与演示
0.什么是迭代器(iterator)与迭代对象? 比如:python中的集合数据类型,如 list . tuple . dict . set . str 等,我们可以使用for遍历其中的每个元素,此外 ...
最新文章
- Cocos Creator 音频文件Audio的绑定与使用(TypeScript)
- 人工智能乌托邦 迪拜认为2071年人类应该这样生活!
- 被上海爱立信录取,GL
- Docker最全教程——从理论到实战(九)
- Membership 数据字典
- sed教程入门与实例练习(一)
- Java增强型for
- 第一册:lesson forty three。
- qfiledialog的取消_QFileDialog类(老九学堂C++会员友情翻译,不喜勿喷)
- python有什么用-python都可以做什么用
- Android Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)
- 如果在安卓后台杀死程序怎么进行保存
- 阿里云张献涛:如何修炼云计算的弹指神通
- shell脚本-从路径提取文件名、后缀
- 视频教程-R语言数据分析挖掘实战-大数据
- 单元测试用例编写总结
- 小程序商城需要食品流通许可证吗?
- [CareerCup] 9.8 Represent N Cents 美分的组成
- 家用无线路由器设置技巧
- 可以显示九天天气情况的天气预报哦-LINUX下JAVA自制服务器端,申请公网IP,处理数据。。第二个项目
热门文章
- sublime中编译的sass如何改变css输出风格?【这里有答案】
- lightoj1259 线性筛的另一种写法 v变成bool标记数组
- 自己封装的一个原生JS拖动方法。
- 正则表达式替换排除特定情况
- 最新版本_adt-bundle-windows-x86_64-20140702 无法建立avd
- Entityframework批量删除
- a.out.h 头文件分析 \linux-1.0\linux\include\linux\a.out.h
- SQL PROCEDURE和 FUNCTION的区别
- Linux 30岁了~我们也老了
- java开机自动运行,怎么用java实现程序开机自动运行