python的迭代器理解
来源:互联网 发布:达内php培训课程 编辑:程序博客网 时间:2024/06/05 19:06
在python中可以使用列表生成式,来生成指定关系的列表元素,同样的在python中有生成器,使用’()’来取代列表生成式中的’[]’,或者在函数中使用yeild的,就可以调用next方法来输出下一个序列的元素,当然这几个方法元素个数都是有限的。在python中可以使用迭代器来不断地获取下一个元素。
在python中像列表这种可以使用for循环遍历其中元素的对象叫做可迭代对象(iterable)。
对于迭代器而言其实需要定义的就是它的next方法,我们可以使用内置的iter()函数让可迭代对象成为一个迭代器。如下
a=[1,2,3,4,5,6,7,8,9,10]a=iter(a)for i in range(10): print a.next()
但是如果继续使用next方法会出现以下错误。
File "/Users/zyc/PycharmProjects/python1/TEST3.py", line 5, in <module> print a.next()StopIteration
其实iterator继承自iterable,但是有了自己的next方法,可以调用输出下一个元素的。
iterable需要包含有iter()方法用来返回iterator,而iterator需要包含有next()方法用来被循环。
如果需要自己来定义一个迭代器的话,需要在类里面定义一个 iter() 函数,用它来返回一个带 next() 方法的对象。
比如说斐波拉契的数列可以这样写
class Iterable: def __iter__(self): return self def __init__(self): self.start = 1 self.pre=[1] def next(self): self.pre.append(self.start) self.start=self.pre[-1]+self.pre[-2] return self.startI = Iterable()for i in range(10): print I.next()
然后测试输出数列的前十个数。
但是需要注意的是,迭代器如果可迭代对象是有限的迭代完了就不能再次使用了。
阅读全文
0 0
- python的迭代器理解
- python的迭代器、生成器、yield理解
- PYTHON编码的理解
- 理解Python的函数
- python虚拟机的理解
- Python的一点理解
- 理解python的slice
- python编码的理解
- python元组传参的理解
- python 中 *\的理解
- python metaclass的理解
- 理解python的generator
- python transpose的理解
- 理解Python的PoolExecutor
- Python中闭包的理解
- Python引用的理解
- Python中协程的理解
- python decorator的理解
- 机器学习2:开始Tensorflow之旅
- Jfreechart-Jfreechart的使用(图表绘制)[线图]
- cmd中运行程序后print中文乱码
- LR中html和url录制方式的区别
- emWin界面刷新
- python的迭代器理解
- Jfreechart-Jfreechart的使用(图表绘制)[饼图]
- 浏览器兼容性问题解决方案之CSS
- the debug of ipdl.py
- Try-Catch你真的很懂吗?
- [ACL2016]Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification
- Android应用流量统计调研
- Android 蓝牙编程控制机器人
- 移动端的头部标签和meta