Learning Python : 3. iterator 迭代器
来源:互联网 发布:复杂网络画图工具 编辑:程序博客网 时间:2024/05/18 00:41
A. 一个类里面,如果实现了 __iter__ 这个函数, 那这个类就是 “可迭代的”
B. 如果它还实现了 next ( self ) ,那它就称为 迭代器
举一个简单的例子:
先上代码:
__metaclass__ = type class Fibs() : def __init__ ( self ) : self.a = 0 self.b = 1 def next ( self ) : self.a , self.b = self.b , self.a+self.b return self def __iter__ ( self ) : return self
注意 next 函数 定义了 递进 的规则 ,并返回 self ( !!! )。
而 __iter__ 则直接返回 self , 源码里对于这个是怎么解释, 好想知道,求解。 或许哪天得找源码来看看。
这就定义了一个 迭代器。
然后可以看看它的元素。
fibs = Fibs()for f in fibs : print f.a , if f.a > 30 : break
结果是:
lam ~/pycode $ python2 iter.py 1 1 2 3 5 8 13 21 34
有木有注意到。 第0个元素( init 的 那个 ) 不见了。
所以迭代器不能拿到第0个(初始)的元素,是吧。
不明觉厉,感觉应该是迭代器本身就是通过 next 来拿到元素, 初始元素当然拿不到。
- Learning Python : 3. iterator 迭代器
- Python 迭代器(iterator)
- Python迭代器(Iterator)
- python的迭代器iterator
- python中的迭代器Iterator
- python: 迭代器 (Iterator)
- Python iterator迭代器
- Python之迭代器(iterator)
- Python学习笔记 - 迭代器Iterator
- python中使用迭代器 Iterator
- 【Python】在Python中自定义迭代器Iterator
- 【Python】迭代器(iterator) vs 生成器(generator)
- python 迭代器(iterator)和生成器(constructor)
- 设计模式-迭代器模式-iterator-python
- Learning Python
- Learning Python
- Learning Python
- Learning Python
- HDU 4414 Finding crosses 暴力枚举
- 开始明白
- JAVA线程池原理以及几种线程池类型介绍
- 快速排序&归并排序
- 关于fork函数的执行问题(源于腾讯校招笔试题目)
- Learning Python : 3. iterator 迭代器
- hdu 4410 Boomerang (2012杭州网络赛1001)
- java InputStream读取数据问题
- Keyboard.Tracer.1.94.SERiAL-RED
- Activity的四种加载模式
- EmEditor11.9.90rc_x86_x64
- [ios开发基础之 Core Data[2]]如何使用Core Data – 预加载和引入数据
- java Scanner详解
- VBox的ubuntu系统ping不通Win7主机的解决方法